1. What if I want to send 3.5 BTC to address Z? How will ledger nano s spend my BTC from these three addresses?
If you are using Ledger Live, it will automatically select inputs to make the smallest and most efficient transaction. If you want to manually choose which inputs to use, you will need to pair your Ledger Nano with a different client, such as Electrum.
2. And in this creating new addresses mechanism, we protect our privacy better, but does it cause more transaction fee?
For example, if I want to spend all 5 BTC and send to address Z. Ledger nano s has to send all my BTC from three addresses, it seems more fee than sending from one address. I'm not sure if I'm right.
You can try thinking of it like this:
Every time you receive bitcoin, think of it as if someone has just paid you in cash. If you receive a bitcoin, it's like someone handing you a $1 dollar bill. Lets say you receive 10 payments like this. Although you have $10 in total, you actually have ten $1 bills. Although you have a total of 10 bitcoins, and your wallet would show this total, in reality you actually have ten inputs, each of 1 bitcoin. Every time you spend an input, regardless of which address it is in, you pay a transaction fee. Spending ten inputs from the same address, or ten inputs all from different addresses, would cost the same.
3. If I send 10 BTC to address C or E, can I spend them? I think so but I cannot spend from a specific address, right?
When you send less than a full input, the remainder gets sent back to a new address you control in the same wallet, known as a "change address". So in your initial example, you send from A to B, and the remainder goes to your change address C. You then send from A to D, and the remainder goes to a new change address E. These change address are part of the same wallet as A, so yes, you can spend them. If you want to spend from them specifically, then as I mentioned above, you will need to use a client which allows this, such as Electrum.