Here is a basic sketch of how I understand the theoretical working of bitcoin of as explained in the whitepaper. Keep in mind, I have not looked closely at the implementations, so this is (1) a high-level sketch, and (2) might differ a bit from the implementation.
Everything in the bitcoin world is done in terms of things called 'blocks'. Blocks are basically long lists of transactions with specific coin. Coins are created at a constant rate in the network (by solving a proof-of-work problem) by creating an initial block. The creation of an initial block creates 50 units of bitcoin (this number decreases for newer and newer blocks for economic reasons and is included in the header of the block, but lets say it is always 50 for now). When the initial block of a coin is created, it basically says something like "this coin is created by account X" plus the proper crypto stuff for security.
After the initial block of a coin is created, account X has gained 50 units of bitcoin. It can now use these to pay other users. Paying amounts to adding a transaction saying something like "0.1337 bitcoins can be claimed by user Y" as part of a new block to this coin. The block is then distributed to the whole network, and they do a proof-of-work computation to verify it, and make it cannon. Thus, no actual stuff is transferred from user X to user Y, just a transactionis added to an appropriate block. User Y notices new coins they can claim. The denomination transferred can be arbitrarily low (up to the limit of the precision of the datastructure used to represent value; float or double or whatever). Thus, to know how much money an account has, you have to look at every single unclaimed coin in the network, see which can be claimed by that account, and sum them.
For instance, if users Y wants to give user Z 2011 units of bitcoins, then they will usually need to use more than one coin (since in each coin, there is a max of 50 units of bitcoins available to Y, and probably her funds are distributed over many many coins). Thus, user Y would create a transaction that claims funds from many transactions to form a a transaction that transfers funds user Z. Only whole transaction outputs can be claimed, so the transaction may claim a bit more than the 2011 bitcoins user Y needs to give to user Z. So the transaction can have another output sending the 'change' back to user Y.
To validate a transaction, all the coins pulled into that transaction are verified all the way back to when they were first created as the 50 bitcoin award for mining a block. Oversimplifying slightly, every bitcoin ever mined must currently exist as one and only one claimable transaction output.