... the 2nd I thought I had an accurate transfer rate (0.00103 BTC/kilobyte - a few days ago) but it was still stuck for several days before I cancelled the transaction.
That transaction fee looks like it should have been OK... that was effectively 103 sats/vByte... and for the past week, transaction fees have been at or below that level for the vast majority of the time... there is no reason that a valid transaction with that fee should not have confirmed.
Did you actually check the transaction on a block explorer like blockchain.com, blockcypher.com, btc.com, blockstream.com etc?
Given that your Bitcoin Core is not synced, you would not be able to see whether or not the transaction was confirmed anyway... so it would show as unconfirmed until your node finished syncing.
- What is the best method for me to transfer this old BTC to my new cold storage wallet/address?
If you do not have any time constraints on your transaction (ie. you're not trying to pay a vendor), then I would recommend you simply set the node to "pruned" mode (See below)... and then let it sync fully... once syncing is complete, try and resend your transaction.
- Do I need to sync all of the blockchain before sending a transaction?
It is generally better to make sure your node is fully synced before attempting to send transactions. This ensures that the wallet is properly updated and the funds that you are attempting to spend are actually available.
- If yes to the above, can I "switch" the blockchain download/sync to an external SSD? or "switch" to make it start syncing in pruned mode?
For "Pruned" mode... "Settings -> Options -> Main"... the 2nd tickbox will allow you to turn pruning mode on and specify the max size to prune to.