Yes, the u-boat must be surfaced. Plus crew members must be in the torpedo room you wish to make the transfer. Hold the cursor on the external torpedo and drag to the spare torpedo compartment (not tube). Then move the cursor on the torpedo that you chose to transfer. There should be a countdown started to when the transfer is to be completed. Usually 40 minutes to an hour depending on the crew allocated to the transfer. Also make sure your not in silent running mode.
No, torpedos cannot be tranfered from stern to forward or forward to stern compartments.
I'm pretty sure I've done transfers at different speeds and weather conditions. Best done at night though. If I'm chasing a new contact, depending on the distance I'll do a transfer then. If forced to dive, the transfer ceases and has to be restarted. You don't loose the torpedo.
I remember at first I couldn't figure out how to transfer torpedos; and returned to port with the externals still safely stowed away.
Hope this helps.