What Danny said. If you had control of all 21 M BTC you could send them in a single transaction.
Depending on the number address that 21 M is located on, you would need to account for a transaction fee, looking at the total number of address and the average block size it wouldn't be the full 21 M.
True and there will never be 21M BTC either. Though if you want to split some hairs, at the protocol level, the fee doesn't reduce the amount sent, only the amount received.

Maybe the OP's transaction size was too large for the default fee.
I think it is something like that. The "default fee" can be set by the user and can be as low as 0 BTC. The reference client will require low priority txs to pay the min mandatory fee of 0.1 mBTC. The message for that does not use the clearest language (especially older versions which were even more cryptic). The OP may have interpreted that to indicate there is a max tx value which is not the case.