Procedural knowledge gap: public key encryption

In the spirit of uncovering procedural knowledge gaps, I’d like to know how to use public key encryption.

Is there some website which generates public and private keys, and lets you encode and decode according to those keys?

I’d love if there was some way I could send my encoded text via IM or email, and just decode it like we do with rot13. Is there some way of doing this?

Currently, I encrypt things using TrueCrypt, but there’s no way that I can communicate with people with that without securely establishing a common key beforehand.

Does anyone know how to do this?