Leonardo,
Boa noite. Vou tentar te ajudar.
1) Uma das coisas que eu não entendi foi o motivo de ter que definir a perspectiva para o body e não mais para o cabeçalho.
R.: Isso acontece pois queremos que a perspectiva mude enquanto rolamos a barra, ou seja, estamos movimentando a tela (movimentando o body). Se ficasse só no cabeçalho não teríamos esse efeito.
2) Outro ponto não compreendido foi o de colocar a altura do html e do body como 100%
R.: Para a propriedade height o valor auto, por padrão, é tomado como aquele necessário para acomodar verticalmente o conteúdo e depende de outros fatores como, por exemplo, a largura do box.
A referência para cálculo da altura, expressa em porcentagem, de um box, é a altura do seu elemento-pai. Assim, um box com height: 50% que seja filho de um container com height: 200px, possui uma altura igual a 50% de 200px = 100px. No exemplo nós queremos que nosso body e html tenham a altura total do documento.
3) utilizar transform-style: preserve-3d e o perspective-origin: 50% 160px
R.: Como tiramos a perspectiva do cabeçalho, inserimos essa instrução de preserve-3d nele para que justamente o efeito desejado seja mantido. Quanto a origem, estamos apenas informando o valor da propriedade, nos exercícios esse valor nunca faz muito sentido pois já nos são entregues "prontos". Se estivéssemos fazendo uma criação nossa, esses valores seriam o que nós julgássemos corretos para o efeito que estamos criando. No caso do exercício para o efeito desejado temos que utilizar esses valores.
Espero ter ajudado.