If I add multiple "receive" addresses to my wallet, and each of them receives some coins. If I then make a payment: why can't I choose which address I pay with? How are coins of different addresses combined into one wallet? How can the system know how much coins I have if there is no ID associated with it?
Thanks.
The system doesn't know how much is in your wallet. The system only knows about addresses
*. That being said your wallet cointains the private keys for all the addresses in your wallet. So it will use multiple addresses as needed to create a transaction.
The concept of selecting the exact input to use is called "coin control" and the QT client doesn't have that capability. Some wallets so. If you want to experiment with a small amount of funds I would recommend using the hybrid eWallet blockchain.info. It allows you to select the input address you want to use.
Generally speaking this isn't really necessary or even useful in most cases.
* If you don't want to go really deep into how Bitcoin really works stop reading now. Bitcoin doesn't actually work on the concept of value at addresses. Bitcoin works on the concept of transferring ownership of outputs. The output of transactions are called "unspent" outputs. When you create a transaction the inputs are unspent outputs of prior transactions. So even if you use a single address if it received coins multiple times the transaction will have multiple inputs. Outputs can only be spent or unspent. You can't spend half of an output. So if you receive 10 BTC and want to spent 4 BTC your client will actually create a 10 BTC tx which has two outputs, 4 BTC going where you want and 6 BTC going to another address in your wallet. The 10 BTC becomes spent and the tx creates two new unspent outputs (4 BTC and 6 BTC).