So every wallet has one private key. You can generate many (infinite?) addresses from it, right? And this are called public keys. So when you want to receive BTC you give public key to person who will pay you. He get this address and BTC is sent to you.
No, that is incorrect.
Each public key has one private key, and each private key corresponds to only one public key. Each public key corresponds to one address. If you have multiple addresses, you have multiple public keys, and multiple private keys. A wallet is simply a collection of private keys and their corresponding public keys and addresses. To the network and the blockchain, there is no such thing as a wallet.
Now i have some questions, if someone could explain me:
1. Who is actually getting BTC? Public address or private key?
I assume you get it on public key, but you can manipulate that asset only if you have private key of that public key. Is this right? And if yes, could you send BTC between public keys generated from same private key?
2. Are only public keys used in Blockchain to record transactions?
No. That is not how Bitcoin works.
In Bitcoin, there is no such an object as a "Bitcoin". There isn't anything for you to actually receive. All Bitcoin is is transactions with outputs. Each output specifies that whoever spends it must provide a proof that they are allowed to spend it. For most outputs, that means providing a digital signature which signs the spending transaction and that signature is then included in the spending transaction itself. There are no actual "coin" objects; just outputs.
Addresses are a hash of the public key. So with most outputs, the output specifies that a valid digital signature must be provided and the public key that verifies that signature must hash to the hash specified in the output. The signature can only be created by the private key for the public key that was hashed to become the address.
3. You can't really check someones full wallet if he is using more public keys? You only know how much BTC is on one public key not whole private key/wallet?
You can check how much Bitcoin an address can spend. Based on past spends, an address can be linked to other addresses. But other than that, you cannot know what other addresses are in a person's wallet and thus you cannot know his wallet's full balance.
Yeah. True. But I know a wallet that doesn't have fee when you transfer bitcoins to similar wallet and fees only applied to other wallets though unfortunately it's not HD wallet (it's our leading local exchange wallet here) though it is not or might not be possible to adopt it since it runs a little bit diffeent.
If it is an exchange wallet, then that means that they aren't actually making a Bitcoin transaction. The transaction is an internal off-chain transaction which is just changing records in the exchanges database to update with the new balances for each account. This is 0 fee because there is (basically) 0 cost, although the exchange may charge a fee for doing that because they can make money from doing so.
Very well said, even you do have lots of different address but all are linked on the same address which is your primary and as being said all bitcoins that have been transferred on those sub-addresses will always credit on the main address. This is what I like when you tend to hide your main address on public and they cant really peek you out. I don't have much knowledge what would be the risk on using it on exchanges though.
There is no such thing as a "main address" or a "sub-address". Addresses are not related to each other and can stand separately. A wallet may have a "main address", but that is internal to the wallet only and no one else knows nor cares about it.