Every time you send money, a new address is created to receive the "change". (Not quite change, but close enough to call it that). If you receive 100BTC from someone then restore your old wallet, you'll still have the 100BTC. If you then send someone 1BTC and restore your old wallet, all your money will be gone -- the 99BTC "change" will have been put into an invisible address which is only present in your new wallet.
This really depends on which wallet you are using. They don't all work this way.
Assuming that you are talking about Bitcoin-Qt, keep in mind that with default settings it pre-generates the next 100 addresses that it will use. When it sends "change", it send it to one of these pre-generated addresses. This means that "If you then send someone 1BTC and restore your old wallet", your money won't "be gone" unless you have used up more than 100 addresses since you created the backup. Otherwise, the "invisible address" will already be in your backup.