En gros, au niveau "norme" les différences principales sont :
- l'engagement à respecter les normes du xml
- la disparition de certains éléments
- le rajout de nouveaux éléments
- la possibilité de rajouter des modules xml correspondant à d'autres normes (mathml par exemple pour pouvoir écrire des formules mathématiques dans une page web)
A noter qu'il est plus facile, pour un programme, de traiter le document, par exemple pour en extraire des informations, quand la page respecte la norme xhtml.
Là où je rejoint Hermes contrairement à j_lecruel, c'est dans le fait que le respect de la norme xhtml devrait s'accompagner d'un respect de la sémentique des balises. Il ne faut pas oublier que le xml (et tous ses dérivés) ont pour but (principal ou secondaire) de classer le contenu dans des balises ayant une signification bien déterminé. Etant donnée ce but là, il est donc illogique par exemple d'utiliser un <div> pour faire des titres de pages, des <p> pour de simples phrases ou un <hx> pour mettre en valeur le pseudo d'un posteur.
Par contre, avec l'html, historiquement, c'est pour ainsi dire comme on veut. Certe les balises ont une signification qui leur sont propre mais vu qu'a l'époque les css n'existaient pas, que le probléme du retraitement d'une page html était pour ainsi dire inexistant et qu'il n'existait quasiment aucun lecteur html pour les aveugles et autres malvoyant, les balises étaient généralement choisit en fonction de leur affichage et non de leur signification.
A noter aussi qu'a partir du moment où on utilise des css, il faudrait ne choisir les balises que pour leur signification et gérer l'intégralité de l'apparence dans le(s) css. Celà est valable aussi bien en html qu'en xhtml.