That's not entirely true. It comes from individual transaction outputs. However, the wallet doesn't let you choose which outputs to spend in the transaction you are creating. The wallet has its own algorithm for determining which previously received outputs to use as inputs.
oh.. ok.. thanks for that
but... in standerd user terms.... what the standerd user will experiance.... is there is one money pool for your wallet that is linked to all your adresses... money comming in or out appears or dissapers from that pool, regardless of adresses used.
that is what the standerd user will experiance... and see.... even if thats not what actualy happens.
Sorry about that. I answer so many technical questions about how the process actually works, that I forget sometimes that someone might just be looking for a description of the user interface.
Note that the user interface will be different for different wallets. If you are running the Bitcoin-Qt reference wallet, then your description matches pretty well.
The Bitcoin-Qt wallet program will take care of hiding most of the technical aspects from you.
A wallet can have MANY bitcoin addresses, and the Bitcoin-Qt wallet will display a single total balance the is the sum of all the unspent bitcoins that have been received at any of the bitcoin addresses that the wallet is keeping track of for you. The wallet will create addresses of its own that it won't tell you about ("change" addresses) and will keep track of bitcoins that it sends to those addresses as well. You can generate a new address for every sender or even for every transaction.
When you send bitcoins, you don't choose where the bitcoins come from, the wallet takes care of that and then reduces the balance that it displays by the amount that it has sent.
It is important to create a backup of your wallet on a regular basis. That way if your computer dies or is destroyed, you'll be able to recover access to your bitcoins.