Suppose I wanted to print my bitcoins to paper for safekeeping. It would be impossible for a hacker to get at my computer. To do so I need to know where to find the private keys. Is there only one private key and many public keys? Does it make sense to carry a printed bitcoin in my pocket and type it in someplace else? Your thoughts on this matter, please.
There are many pairs of private-public keys. The usual wallet.dat starts with 100 keypairs, although usually you use only a few. To get your keys you can use Pywallet. Then you can print them as they are, or as QR codes.
You should note however, you are not printing Bitcoins, but the keys you use to get to them. This is more like printing username and password to your paypal account, rather than printing money.
Carrying your printed keys is only useful if you intend on paying with them (and only as much as you need in case you loose your printed key). As not many people accept Bitcoins nowadays, it is not too useful.
There is one private key for each bitcoin address. While it is possible to carry private keys around and make payments with them, it is not a very common procedure. The biggest problem is that the person receiving the coins would have to import your private key and transfer them somewhere else to make sure that you don't spend them again (and you would probably have to have an address where you can receive your change).
Bitcoin payments should be made with a bitcoin client (either on your mobile phone or on your computer) because it is simpler and safer. Printing addresses is a good idea for backup purposes. See this question to find out to print them.
The wallet.dat file stores your private keys. With the current implementation there are as many private keys as there are public, so you'd want to extract the private keys from the wallet for printing. As far as using your printed keys, you can either import them into a wallet later - alternatively, places like mtgox allow you to type in a private key to redeem your coins.