Es cierto que las especificaciones HTML permiten que se omitan ciertas etiquetas en ciertos casos, pero generalmente no es aconsejable hacerlo.
Tiene dos efectos: hace que la especificación sea más compleja, lo que a su vez hace que sea más difícil para los autores de navegadores escribir implementaciones correctas (como demostró que IE lo hizo mal).
Esto hace que la probabilidad de errores del navegador en estas partes de la especificación sea alta. Como autor de un sitio web, puede evitar el problema al incluir estas etiquetas, por lo que, aunque la especificación no dice que tiene que hacerlo, reduce la posibilidad de que las cosas salgan mal, lo cual es una buena práctica de ingeniería.
Además, la última especificación HTML 5.1 WG dice actualmente (tenga en cuenta que es un trabajo en progreso y aún puede cambiar).
La etiqueta de inicio de un elemento del cuerpo puede omitirse si el elemento está vacío, o si lo primero dentro del elemento del cuerpo no es un carácter de espacio o un comentario, excepto si lo primero dentro del elemento del cuerpo es un meta, enlace, script, estilo o elemento de plantilla.
http://www.w3.org/html/wg/drafts/html/master/sections.html#the-body-element
Esto es un poco sutil. Puede omitir cuerpo y cabeza, y el navegador deducirá dónde deben insertarse esos elementos. Esto conlleva el riesgo de no ser explícito, lo que podría causar confusión.
Así que esto
<html>
<h1>hello</h1>
<script ... >
...
da como resultado que el elemento de script sea hijo del elemento body, pero esto
<html>
<script ... >
<h1>hello</h1>
daría como resultado que la etiqueta del script sea un elemento secundario del elemento head.
Podrías ser explícito al hacer esto
<html>
<body>
<script ... >
<h1>hello</h1>
y luego, lo que tenga primero, el script o el h1, ambos aparecerán, previsiblemente, en el elemento del cuerpo. Estas son cosas que son fáciles de pasar por alto al refactorizar y depurar código. (por ejemplo, tiene JS que está buscando el primer elemento de script en el cuerpo; en el segundo fragmento dejaría de funcionar).
Como regla general, ser explícito sobre las cosas siempre es mejor que dejar las cosas abiertas a la interpretación. En este sentido, XHTML es mejor porque te obliga a ser completamente explícito sobre la estructura de tu elemento en tu código, lo que lo hace más simple y, por lo tanto, menos propenso a malinterpretar.
Entonces sí, puede omitirlos y ser técnicamente válido, pero generalmente no es prudente hacerlo.
title
etiqueta. Este es el documento más pequeño que considera válido:<!DOCTYPE html> <title>A</title>