You can use poEdit, which is a very nice and easy to use editor for po gettext translation files.
The .pot files are "translation templates", as in, a list of all the strings in the program that can be translated.
The .po files a are the already translated files, that is, after you translated all the strings.
The .mo files are compiled versions of the .po files. While the .po files are just plain text you can edit in any text-editor, the .mo files are binary files that the program uses to get the translated strings.
For e.g., in wordpress, the wordpress.pot file is just a list of all the strings that can be translated; the he_IL.po file contains all the strings from the wordpress.pot file, translated to Hebrew; and the he_IL.mo file is a compiled version of the he_IL.po file that WordPress actually uses to get the translations from.
Strictly speaking, you just need the .mo file for the translation to work, but people put all the files in the package (like I do with WordPress) to make it easier to work with.
You can use gettext to generate the .mo file, with the msgfmt command either under linux or windows (with cygwin). Alternatively, poEdit can automatically generate a .mo file for you everytime you save the .po file.
I use poEdit under windows and linux and the msgfmt command if I'm on the mac (cause there is no poEdit for the mac). You can use fink to get gettext and the msgfmt command for the mac.
I think I'll now translate all this and post it on the Wiki, with some more instructions regarding poEdit.