Cerco di risponderti seguendo un certo ordine di punti:
  1. Mettiamo da parte il discorso sulla semantica, altrimenti non ne usciamo più.
  2. Quando posti del codice sul forum sarebbe opportuno usare gli appositi tag di formattazione, in modo da rendere più comprensibile il codice e l'intera discussione. Vedi regolamento di sezione.
  3. Il codice html che hai postato presenta diversi errori (tra cui mancata apertura/chiusura di tag) che compromettono la validazione del codice stesso e possono incidere sulla corretta visualizzazione, nonché mostrare la pagina in modo differente tra i diversi browser (ciò che ho accennato sul precedente post). Consiglio di usare uno strumento di validazione in modo da poter rilevare eventuali errori o avvertenze e correggere opportunamente il codice. Come servizio online puoi usare validator.w3.org/nu/.
  4. Nel documento html è sempre bene specificare un DTD. L'omissione di questa dichiarazione può incidere sul modo in cui la pagina viene presentata e quindi sulla disposizione degli elementi. Per di più, la presentazione della pagina può differire a seconda del browser in cui viene mostrata. Come sopra, consiglio di verificare attraverso un validatore.
  5. Il codice css che hai postato presenta un errore. Il valore regular non è un valore valido per la proprietà font-weight. Possibile che non incida direttamente sul problema in questione ma non è escluso. Consiglio, anche in questo caso, di verificare sempre la correttezza del proprio codice attraverso gli appositi strumenti di validazione. Online puoi usare jigsaw.w3.org/css-validator/.
  6. Ho provato il tuo codice, correggendo opportunamente gli errori, ma non vedo sostanziali differenze. Attualmente ho testato con FF41, CH46, IE9 su Vista. Noto solo la diversità del font utilizzato, che di default (non avendolo tu specificato nel css) risulta diverso tra i vari browser, e che potrebbe in effetti comportare delle differenze (relativamente minime) dovute al diverso spazio occupato dai testi stessi. Ci sono poi altre minimissime differenze, come il bordo attorno all'immagine usata dentro il tag <a> (visibile su IE), che però non credo abbiano parte più di tanto nell'argomento in questione.


Ora, le differenze che noto sono al massimo di 1 o 2 pixel (che probabilmente sono dovuti proprio alla differenza del font o delle relative proprietà del font), ma tu hai accennato a centimetri.

Da ciò che ho provato (il codice che hai postato e che ho corretto perché fosse valido), non vedo questa differenza di centimetri. Non riesco a seguire quindi ciò che hai indicato.
Non so se sia stato un tuo errore nello scrivere centimetri anziché pixel.
Non so se gli errori, nel codice che hai postato, siano solo errori di trascrizione di ciò che hai riportato qui sul forum, oppure siano errori effettivi che hai sul tuo codice originale e che possano quindi essere rilevanti secondo l'argomento in questione.
Non si capisce a quali elementi, in particolare, ti stia riferendo.

Ad ogni modo sarebbe bene definire meglio il font (o i font) nel css. Specificando quindi opportunamente anche i vari relativi valori (size, line-height, family, ecc.) in modo da uniformare la presentazione della pagina sui vari browser.

Inoltre, così come per il font, molte proprietà hanno dei valori di default che possono differire da browser a browser. Se queste proprietà non sono definite sul css allora il browser userà, appunto, i valori di default. In questo caso è prevedibile che la presentazione della pagina possa risultare differente tra i vari browser.

Per concludere:
in genere, proprio per questi motivi, si fa uso di un file css (generalmente chiamato reset.css) in modo che siano "inizializzate" opportunamente tutte le varie proprietà così da rendere, la presentazione della pagina, uguale su tutti i browser.