I've experienced some frustration.
This is because you are trying to look at bitcoin at a technical level without any understanding of how bitcoin actually works. You've come to the right place to learn.
1)
I have 10 btc in address A of my (non-imported) wallets.
At the technical level, bitcoin doesn't maintain a balance at an address. Instead, the blockchain allows the wallet to SEPARATELY keep track of all the individual payments that have been sent to an address. The wallet might choose to add those payments up and show you the total as a balance, but they are actually still separate units in the blockchain.
It would be more accurate to say that you have "a list of payments all sent to address A such that the sum of those payments is 10 BTC".
1)
...This transaction sends 3 btc from A to the exchange,
No. Bitcoin doesn't "send BTC
from" anywhere. It chooses unspent payments, and lists them in the transaction to provide value to that transaction. After they have been listed in a transaction they are considered to be "spent". They can therefore never again be used to provide value to any future transaction.
So, in the case you are describing, the previously received payment that the wallet chose to spend was a single unspent 5 BTC payment that you received in the past.
Then, once value has been provided to the transaction with the list of previously received payments, the wallet adds a list of NEW unspent payments that can be spent in the future. In this case, it added a 3 BTC payment to an address under the control of the exchange.
and sends 2 btc to a new address B of my wallet,
Correct.
The way bitcoin transactions work is that there is a list of unspent previously received payments that add value to the transaction and a list of new unspent payments that reassign that value. Any value left over in the transaction that hasn't been reassigned is the TRANSACTION FEE which the miner is allowed to assign to himself.
So, if the transaction didn't have that 2 BTC payment listed in the transaction, then the miner would have received a 2 BTC transaction fee!
This payment in the transaction is often called the "change", because it is much like paying a merchant for a $10 item with a $20 bill. You get back a payment of a $10 bill as "change" from the transaction.
You'll often see it described as a "change output".
More specifically, the sum of the unspent remaining SEPARATE payments to that address is 5 BTC.
What's the reason coin is sent from a to b?
Hopefully you can now see why a payment is made to address b.
All it does is increase fee costs for this and future transactions.
No it does not. It wouldn't matter if that payment were sent to A or to B. It is still a separate payment. Sending it to A would not reduce the cost of using that payment in a future transaction.
I'd assume it's because reusing addresses is bad for privacy.
Since it isn't going to increase the cost of future transactions, it makes sense to use a new address. This increases privacy and slightly increases security.
But this is not the case here as some coin is still is A.
That is only because address A was re-used to receive multiple payments. This is a bad practice. Whenever possible a new address should be used for every payment received.
By re-using the address when you received the payments, you damaged your own privacy as well as some of the privacy of those you transact with.
Too many people mistakenly think of a bitcoin address as an account number. This is a very common misunderstanding.
A better analogy would be to think of a bitcoin address as an invoice number. It is a way to identify who sent you the bitcoins, and why they sent them. If you give every sender a separate address for every payment that they will send you, then you can keep track of who you gave the address to and what the reason was.
2)
Also, using the memonic passphrase I can sign messages with any specific addresses of any specific wallet. (using github tools in offline mode)
Some coin of a wallet was sitting in an address, comparable to address B above, for which I could not locate the private key.
I had to transfer those coin to a new receiving address of the same wallet, for which I did locate the private key.
How did you transfer them if you didn't have the private key?
Maybe these intermediate addresses have a different type than the receiving addresses? not sure
No. They are just additional addresses generated from the same wallet memonic.
3)
Some transactions to previously used addresses were not showing up in the transaction page, although the balance was correct.
I'll investigate this later on, I might be wrong
Blockchain.info has a reputation for having issues with their website and wallet. It wouldn't surprise me at all if they had a bug that didn't display all the transactions.
EDIT: I just send another tx, now a transaction from 2 addresses, although one address has enough to cover the entire transaction???
Correct.
The wallet chose 2 unspent previously received payments to provide value to the transaction. Rather than list 2 separate payments received at the same address, it listed 2 separate payments received at two different addresses. The wallet most likely did this because it couldn't find a single unspent payment received at any address that was big enough to cover the entire value needed. As such, this doesn't change the size of the transaction at all. It might even make the transaction smaller if the "one address" which "has enough to cover the entire transaction" actually received all that value spread across more than two payments.
That's like 0.5$ lost in excess tx size fees
Not excess. Your wallet almost certainly didn't have a single unspent previously received payment large enough to cover the entire value of the transaction. Therefore, it was necessary to add another previously received payment to the list.
I can't imagine this being good for microtransactions.
I guess that depends on how small a transaction has to be to be considred a "microtransaction". But in my opinion, bitcoin hasn't been viable for microtransactions for a while now, and will probably not be ever again. (I'd consider a "microtransaction" to be anything less than $0.01 worth of value).