Let's say I want to send BTC to a friend. This friend can now explore the blockchain and find how much money I have or what other purchase I've done or will do. What can I do in order to prevent him from being able to do that or see all of that information? Will changing my public key help, or can he figure out that all the keys belong to the same wallet if they are used in the same transaction?
The simplest way is to not reuse addresses, something that wallets do by default anyways. Every time you want to receive Bitcoin, get a new address from your wallet and give that to whoever is sending you Bitcoin. You typically do this by going to the "Receive" page or tab in your wallet and clicking "Receive Bitcoin" (or similar). By doing so, the sender will not know how much money you have in your wallet and they won't be able to see all of your transactions.
When you send Bitcoin, you should also use new change addresses every time. This is the default behavior in wallets so this is not something you need to do manually or worry about.
By not reusing addresses, it is harder to link your transactions to you and it makes it more difficult for everyone you transact with (both receive and send) to know how much money you have and who you are sending money to or receiving money from.