For the first one, I may be off but when you download the Bitcoin app you are also downloading all transactions that have taken place right? (I may be way off there). But if someone wanted to attack, they would just create millions of dummy transactions back and forth between two addresses so that the size of the download would get so huge that nobody would be able to load up the client because of the hard drive space needed. Again, I may be way off on how that works but it seems that hard drive space could potentially be an issue if someone went about it right.
How would these transactions get in the block chain exactly?
As for the BTC addresses, yes I know that there are billions (trillions?) of addresses, but could someone not set up thousands of bots to just keep creating addresses at a speed where they own all BTC addresses after a few years? What is preventing this from happening?
Creating a bitcoin address has no effect on anyone else whatsoever. Creating an address is purely something you do locally. So if they did this, nobody would ever even know.
Now, in order to take your Bitcoins, they'd have to find a private key whose corresponding public key has the same 160-bit hash as your key. The size of the hash was specifically chosen to be way too large to make this possible. The consensus right now is that a 104-bit hash would be safe from such an attack, even against an attack funded by all the resources the human race could muster, until around 2050. A 160-bit hash is 72,000,000,000,000,000 times harder.