OK, newbie here but please bear with me because I'm sure many people reading this thread would like to ask this same question but are afraid to look noob. You keep saying not to reuse addresses and keep balances on new addresses. Now as I understand it, in order to send coins to any address the network needs to be made aware of it by means of a transaction which will be forever recorded on the blockchain with the public keys of the addresses. So what's the point in tranferring the coins to a new address if its public key is going to be made public by the transaction anyway, even if the address owner only made that single transaction using that address?
Addresses aren't public keys. Addresses are public key hashes (or script hashes). Hashing functions are one way. Knowing the hash doesn't allow anyone to know the key. When you spend the coins you reveal the key and other nodes verify it hashes to the pubkeyhash in the output you are spending.