Since 0.3.21, -rescan is only necessary is exceptional cases.
You can swap your wallet.dat just fine without it.
I dont think so.
I withdrew some BTC from MTGox to my Bitcoin 0.6.0 Windows client. When the client showed coins received I did not wait for confirmations. I immediately closed the client, and removed wallet.dat to my offline storage hard drive.
Two days later, I brought wallet.dat back to the client, but it shows the coins received but "unconfirmed". Blockexplorer.com shows 120 confirmations for my coins. But the client says the coins are not available for spending.
I tried reinstalling the client but still showing the coins as unconfirmed. I tried deleting the entire folder C:\users\myusername\appdata\roaming\Bitcoin, and then reinstalling and re-downloading the entire block chain. This took about 10 hours. But still coins shown as unconfirmed.
Finally the only thing that fixed the problem was running Bitcoin-qt.exe -rescan