I have downloaded the bitcoin client and the client has synced with the network. I have made a few transactions with my wallet, both inbound and outbound. I have also encrypted my wallet with a password. I have also backed up my wallet, locally, and also emailed it to my gmail account. Two questions...
1. will the wallet address that I have used in the past continue to be mine forever? Or will it change after X number of transactions?
2. If I backed up my wallet 2 months ago, then made several more transactions after the backup, then my PC crashed, then restored from a 2 month old backup, would my restored wallet be 100% exactly the same as the one that crashed? Would I have the transactions that occurred after the backup?
Your first question is tricky to answer, because wallet software isn't what core Bitcoin is.
Understand that Bitcoin works based on public/private key pairs that are cryptographically linked. You start with a private key which is a 256 bit number - a really really big number, so big in fact the chance anyone else randomly picks your same number is infinitesimally small even if they make thousands of guesses per second for years. The private key is what gives permission to spend/send bitcoins and only you know it; so if you lose it you lose that ability. So the answer to your first question is yes, any address you generate is yours forever as long as only you know the private key.
However, the Bitcoin wallet software you use generates new addresses for some transactions and when you click to generate new addresses. These addresses are taken from a key pool (containing 100 keys by default) so if you make a backup which knows all of the addresses in your key pool, but then do 150 sending transactions, for example, your wallet software will replenish the key pool back to 100 with some keys your backup doesn't know about. It will use the oldest addresses first, but if you ever receive coins to one of the addresses not in your backup and your computer crashes then you lose those coins. That's why it's good to refresh your backups periodically depending on your usage patterns. Here is backup advice from Gavin:
Backup every 30 sendtoaddress or generatenewaddress and you'll be fine-- you should always have at least 3 backup copies of all your keys.
If you're running a very busy service so backing up every 30 is too often, then run with -keypool=1000 and backup at least every 300 sends/generates. ...
You might check out
that thread on the subject anyway if interested as it may be cool to read a thread Satoshi actually participated in