Right now, the encryption thing goes like that:
1) I ask a guy to give me his public key.
2) I encrypt a message
3) I send him the encrypted message.
Since only if he owns the address, he can decrypt the message, why can't we simply skip the step 1?
For starters, you should forget about bitcoin address, imagine it doesn't exist, think of it simply as a different representation of a public key, next you need to understand basic Public-key cryptography, the simplest way to look it is by imagining a scenario where you need to send your friend something as a gift, say it's a gold coin, you are going to send it using a third-party which you don't trust, that coin is so expensive and you are afraid that somebody will steal it, so you decide to put that coin in money/cash box and send the whole box to your friend, you can simply purchase a new box, send the key and the box together (a terrible idea) or send the lock and the key separately (a bad idea)or a better way would be asking your friend to buy the box and send it to you (unlocked) and of course, he will keep the keys.
So now you put that coin in the box, and then you lock it (notice that you don't need the key to lock the box, but you need the key to unlock it) and then send it via an untrusted medium.
Your friend gets it and he uses the keys (since it's his lock and only he has the keys - not even you have the keys) and bingo, the coin arrives safely.
The box = Your friend's public key ( he can safely share it with others)
They keys = Private keys (He must not share it with others)
The coin = The encrypted message (The transporter knows there is something inside the box, but he doesn't know what that is)
You can't skip any part of those three.
Yes but I'm trying to say that if a person can decrypt the hash(private_key) (which is the public key), he can do it for the hash(hash(private_key)) too. (which is the address)
Well actually the address is more like hash(hash(hash(private_key))), you need to hash the public key twice first using sha256 and then ripemd160, but you are correct, your friend doesn't need you to send him the public key nor the address, using his private key he knows what is the public key as well as the address, but YOU need HIS public key to encrypt a message which then he can decrypt using his private key.