Idiots guide to 'em' - it's based on the size of the text. 1em is the distance from the top of the tallest letter to the bottom of the lowest letter. So you can set font sizes in ems, which works just like %ages. You can also set object dimensions in ems, which takes the same measurement. Note that ems can be different sizes on the same page - if you have a header with a text size of 200% and you set a height of 2em, that will be bigger than a box in the main body text with a height of 2em, because the font size it is based on will be different.
For font sizes, I would generally use %, which works just like em but doesn't trip over as many browser bugs. If you want to make headings bigger than regular text, set font-size:150% (or whatever scale looks right). Don't set a size on the basic body text - let people see the site in the text size that they have as their browser default (which you can assume is the size of text they want to see).
For objects, it depends on the layout of your site whether you use px or em. If you use px, the box will be the size you've said, no matter what settings and text sizes the visitor has (although it will zoom with the rest of the page). If you use em, the box will be the same size relative to the size of the text - so if a user changes the font size (rather than zooming), or has a different font installed that's a slightly different size, the box will adjust accordingly - this means you can reliably expect it to fit the same amount of text on a line.
If you think in terms of pixel perfect precision, ems can be confusing and challenging. But if you think in terms of content laid out on the page as text, and the rest of the page as being built around the text, they become a whole lot easier to get your head round, and a whole lot more flexible than set dimensions like px.