1em (cadratin) égale le corps de la fonte courante (et 1ex égale la hauteur d'œil de la fonte courante), donc la principale particularité de ces deux unités est que leur valeur effective *peut varier d'un élément à l'autre* (si je mets un font-size: 80% dans un élément alors 1em à l'intérieur de cet élément vaudra 0,8em de l'élément parent). Note que la valeur de 1ex peut aussi changer si tu changes de police en gardant le même corps !
(la hauteur d'œil c'est la hauteur d'une lettre minuscule hors ascendantes/descendantes, autrement dit c'est la hauteur commune des lettres a, c, e, m, n, o, r, s, u, v, w, x et z, et aussi en principe du caractère ":". Le cadratin quant à lui est la hauteur maximale d'une ligne de texte ascendantes et descendantes incluses, et c'est cette valeur que tu choisis en spécifiant le corps de la police. L'idée est que si tu espaces tes lignes de base d'exactement un cadratin, alors les caractères pourront se toucher mais ils ne se recouvriront pas¹. La valeur typique de l'espacement entre deux lignes de base consécutives est de 1,2 cadratin.)
Il n'a pas nécessairement aucune taille fixée, si tu mets font-size:12pt sur ton body et que tu n'as aucun autre font-size, alors 1em vaut exactement 12 points partout.
1pt est une unité absolue qui vaut 1/72 pouce.
1px on vient d'en parler, c'est un pixel, donc sa taille dépend de la résolution, qui peut être égale à la résolution de l'écran ou non.
¹En fait il peut y avoir certains caractères qui dépassent, typiquement les majuscules accentuées, mais bon c'est l'idée générale quoi ^^. A priori un caractère comme "[" fait exactement un cadratin de haut.
Flanker (./139) :
Ça évite les zooms sur les petites images qui sont souvent foirés je trouve :/

, c'est pour ça que j'aime bien le zoom actuel de firefox ^^