For security, say I am normally storing my wallet.dat in an encrypted folder on external USB sticks, and don't keep it on the hard drive, having created addresses in this wallet previously. So I let bitcoin-qt client start up, and sync with network to catch up with the blockchain. The wallet.dat that bitcoin-qt sees at this point is an empty one, the one it creates by default.
Now to make a payment I disconnect from the net, quit bitcoin client, and copy my backed up wallet.dat onto hard drive, overwriting the empty wallet.dat. Start bitcoin client, bitcoin-qt sees my real wallet and knows my balance, I enter all the payment details, re-connect to the net and hit send. Disconnect from net. This means my actual wallet is exposed to an online machine for the minimum time, for security.
If you're really going to go through all that effort, you should seriously consider getting a cheap second computer to keep offline at all times and just running Armory.
Q1 - is best practice that I should now make a backup of the wallet.dat I just used, rather than just delete it and rely upon my earlier backups? I'm thinking that the (hidden) change address that bitcoin created to arrange for my 0.4995 to be sent back to me will be one that my earlier backed up wallets will not know about, so would I lose the change if I don't make fresh backups every time I send BTC in this way?
By default, Bitcoin-Qt pre-generates 100 private keys / addresses when it creates a new wallet.dat. Anytime it needs a new address (for change, or because you clicked the "New Address" button), it takes it from this queue of addresses that are already stored in the wallet.dat and then adds a new address on to the end of the file.
As such, the backup that you have already has the "change" address in it as long as you created the backup less than 100 addresses/transactions ago.
Q2 - if I want to simultaneously send the 1.0005 BTC out, and at the same time clear out all remaining funds in that address by doing another transaction that sends 0.4995 BTC to another address of mine, is that possible right away, or do I have to wait?
It is possible to do right away. In the "send" tab, you can choose to "Add Recipient" to send to more than one person/address with a single transaction.
I'm thinking here that my first transaction has effectively used up all my 1.5 BTC, and until the change comes back (i.e. until the blocks are created that confirm the transaction), I don't have any more funds to send? Is that correct?
No. Bitcoin-Qt is aware of the transactions that it creates. It trusts itself not to double spend a transaction that it is sending to itself, so it allows you to use the outputs of that transaction that are sent back to yourself immediately in another transaction (although that next transaction will likely require a transaction fee since the inputs won't have built up enough priority yet).
So I have to wait 10 mins for the first block, and longer for confirmations to be safe, before I can then send the 0.4995 anywhere?
Generally, most users won't run into such a problem. However, if you are swapping wallet.dat files in and out, and you are sending a transaction with one wallet.dat to an address that is only in some other wallet.dat, then yes you'll have to wait for confirmations before Bitcoin-Qt will let you use the bitcoins.
Q3 - I am wondering why the default behaviour of bitcoin-qt client is that change is sent back to a hidden address? I'm sure there must be some reason which I haven't understood. Isn't hiding the change address going to result in a lot of ppl not realising it's in a hidden address, and what if they lose access to it through not realising they need to know the private keys of not only the addresses they have openly created, but the private keys of these hidden change addresses that the client has secretly created as well?
It seems that Bitcoin-Qt was created with the assumption that people would install it and use it. (Not play around with deleting some of its data files, moving pieces to other drives, and importing and exporting keys)
For the average user that expects to be able to send and receive money like they do with a bank account, it would only add confusion to show these "change" addresses. This is a protocol layer technical detail, and the wallet is designed to add a layer of abstraction so the user only needs to think about where they want to send the money, and how much they want to send (without needing to know all the intricate technical details about how such a transaction is handled at the protocol level).
Those who intend to use the software in advanced technical ways, are expected to know what they are doing.
As an alanogy: If I want to drive my car, I put the key in, turn it, move the lever to the "D" position and push the pedal near the floor. I don't need to understand gear ratios, compression ratios, fueal air mixtures, torque, valve timing, etc. If I decide that I want to play around with modfying valve timing, or replacing the fuel with an alternative fuel, then I'm expected to either understand fully what I am doing, or suffer the consequences.