Woulaa, il y a eu des choses un peu comment dire... "à ne pas dire"
Pour les hacks, à priori il n'y a pas trop besoin de les utiliser dans les cas les plus classiques, les hacks ne sont pas à utiliser à la première diffcultée, il existe bien souvent des solutions plus pérènes.
Pour ce qui est de la version d'HTML utilisée, perso, je penche à utiliser xtml1 en application/xhtml+xml pour les navigateurs qui le supporte et en text/html pour les autres. C'est le but d'xHTML, d'être traité comme du XML. Sinon, à la limite, il serait plus logique d'utiliser HTML qui lui doit être servi en text/html. Mais bon, on ne vit pas dans un monde parfait
Pour ensuite strict/transitionnal, là c'est par rapport à ce que tu cherches à faire, genre, target="_blank" sera valide en transitionnal mais pas en strict, ce genre de choses. Donc, c'est au cas par cas là, il faudrat voir selon tes besoins.
Pour les méthodes de conception, la validation te permet de te fier un minimum à ton code, donc c'est la première étape, tu codes, tu codes, tu codes, et hop une fois que tu as fait une bonne partie de la chose, tu valides, HTML et CSS, si tu as des erreurs, corriges les dans l'ordre, la première erreur entraine souvent d'autres erreurs qui n'en sont en fait pas. Par exemple, une page avec 25 erreurs ne contient pas forcément 25 erreurs, en corrigeant la première, il est fort possible que le compte déscende à 15 par exemple. Il y a aussi les erreurs du même type (genre /> oublié en strict...). Donc la première étape faite, ton code est valide, tu t'assure déjà moins de suprises, et tu pars sur de bonnes bases.
Par contre, les validateurs ne sont pas fiables à 100%, ce ne sont que des scripts après tout. Donc, il faut bien connaitre le langage que tu utilises pour être à peu près au courant de ce que tu utilises et comment tu dois l'utiliser, on en vient au respect de la sémantique web, c'est l'usage de telle ou telle balise pour son usage spécifique. Un titre devra être balisé avec <hN>, un paragraphe avec <p> etc...
Voilà, tu as un code html propre et valide (à piori), un code CSS valide. Tu as encore des bugs... ce sont généralement des propriétés interprétées différement selon que le navigateur est IE ou un autre, pas de panique laissons les hacks où ils sont, voyons les techniques que tu utilises, float, positionement absolu, ... Ne pas tester au petit bonheur la chance et comprendre le pourquoi du comment de chaque technique. De petites recherches sur ce forum devrait t'y aider, tes signets aussi je pense
Une fois les techniques assimilées, il doit te rester à priori très peu de différences entre IE et les autres, peut être même aucune, là tu peux eventuellement songer à utiliser quelques hacks mineurs pour limiter la casse, généralement dû au box model (tu dois avoir ça dans tes signets aussi

). Mais en voulant moins controler ta mise en page au pixel près et en laissant plus de marge ou d'espace entre les éléments, tu peux t'en tirer sans hacks, simplement avec une légère différence entre les navigateurs, mais si tu es graphiste, c'est pas top, donc quelques hacks s'imposent alors généralement, mais à utiliser avec parcimonie et en dernier recours.
Sinon, le mieux, c'est de tester et de coder en fonction des navigateurs respectueux des standards, comme firefox/mozilla ou Opera qui sont les plus respectueux. Et ensuite, une fois ton code propre, logique, valide, sémantique et fonctionnel, tu testes sous ces navigateurs, et tu vérifies le résulat sous IE.
Voilà voilà ! Debout tout le monde ^^