You don't even need to know the current block to send transactions, if I remember right (haven't dived in deeply enough yet to be 100% certain). The block solver (miner) is the only one who needs to know the chain, as they choose what transactions to include, and your transaction may not even be included (ie, if fees are too low), but may in a later block.
You need to know the current block chain in order to know that nobody is fooling your client.
In other words, you need to know the current block chain in order to be sure you really did just receive 100BTC from Website X, and that it wasn't just a trick.
Only partially. You only need to know N blocks after a transaction to be N-certain a it is valid - that it's included in a block at all and propagated through the network implies the transaction is valid. If it weren't, other clients wouldn't accept the block.
You can never technically be completely certain a transaction isn't fake. You could be looking at a non-standard branch of the network, and you have no way of knowing it. So randomize your connections, wait for a few more blocks at reasonable difficulties, and you can be sure enough without having to work from the origin.
And (again, not 100% certain) I think you only need to store the hashes of each block to prove the chain is valid, and demonstrate a certain amount of work has been done (the difficulty of each). Each block solution builds only on the previous hash. That's just relatively tiny numbers, the entire list of block solutions would likely fit within 5MB with room to spare.
This is because it needs to verify the block chain history, in order to provide cryptographically secure transactions.