É verdade que as especificações HTML permitem que certas tags sejam omitidas em certos casos, mas geralmente isso é imprudente.
Ele tem dois efeitos - torna as especificações mais complexas, o que torna mais difícil para os autores do navegador escrever implementações corretas (como demonstrado pelo IE errando).
Isso aumenta a probabilidade de erros do navegador nessas partes da especificação. Como autor de um site, você pode evitar o problema incluindo essas tags - portanto, embora as especificações não digam que você precisa, isso reduz a chance de dar errado, o que é uma boa prática de engenharia.
Além do mais, a especificação mais recente do HTML 5.1 WG diz atualmente (lembre-se de que é um trabalho em andamento e que ainda pode mudar).
A tag inicial de um elemento do corpo pode ser omitida se o elemento estiver vazio ou se a primeira coisa dentro do elemento do corpo não for um caractere de espaço ou um comentário, exceto se a primeira coisa dentro do elemento do corpo for um meta, link, script, estilo ou elemento do modelo.
http://www.w3.org/html/wg/drafts/html/master/sections.html#the-body-element
Isso é um pouco sutil. Você pode omitir corpo e cabeça, e o navegador inferirá onde esses elementos devem ser inseridos. Isso implica o risco de não ser explícito, o que pode causar confusão.
Então, é isso
<html>
<h1>hello</h1>
<script ... >
...
resulta no elemento script ser filho do elemento body, mas isso
<html>
<script ... >
<h1>hello</h1>
resultaria na tag de script um filho do elemento head.
Você pode ser explícito fazendo isso
<html>
<body>
<script ... >
<h1>hello</h1>
e, o que você tiver primeiro, o script ou o h1, os dois aparecerão previsivelmente no elemento body. São coisas fáceis de ignorar ao refatorar e depurar o código. (digamos, por exemplo, você tem JS que está procurando o primeiro elemento de script no corpo - no segundo trecho, ele para de funcionar).
Como regra geral, ser explícito sobre as coisas é sempre melhor do que deixar as coisas abertas à interpretação. Nesse aspecto, o XHTML é melhor porque obriga a ser completamente explícito sobre a estrutura do elemento em seu código, o que o torna mais simples e, portanto, menos propenso a erros de interpretação.
Portanto, sim, você pode omiti-los e ser tecnicamente válido, mas geralmente não é aconselhável fazê-lo.
title
tag. Este é o menor documento que considera válido:<!DOCTYPE html> <title>A</title>