O HTML semântico tem como objetivo descrever o significado do conteúdo presente em documentos HTML, tornando-o mais claro tanto para programadores quanto para browsers e outras engines que processam essa informação.
O 'header' é utilizado para representar o cabeçalho de um documento ou seção declarado no HTML. Nele podemos inserir elementos de 'h1' a 'h6', até elementos para representar imagens, parágrafos ou mesmo listas de navegação.
O elemento 'nav' é utilizado quando precisamos representar um agrupamento de links de navegação, que, por sua vez, são criados com os elementos 'ul', 'li' e 'a'.
O elemento 'main' especifica o conteúdo principal e, consequentemente, de maior relevância dentro da página. Para ser considerada bem construída, uma página deve apresentar apenas um conteúdo principal.
O elemento 'aside' é utilizado quando precisamos criar um conteúdo de apoio/adicional ao conteúdo principal.
Utilizamos o elemento 'article' quando precisamos declarar um conteúdo que não precisa de outro para fazer sentido em um documento HTML, por exemplo, um artigo em um blog. É recomendado identificar cada 'article' com um título.
O elemento 'footer' representa um rodapé de um documento, como a área presente no final de uma página web. Normalmente é utilizado para descrever informações de autoria, como nome e contato do autor, e data de criação do conteúdo.