Olá, Victor! Tudo bem?
Desculpe a demora em retornar.
Respondendo à sua primeira pergunta, a diferença entre innerHTML e template string é que o innerHTML é uma propriedade que permite a você definir ou obter o conteúdoHTML de um elemento específico, enquanto a template string é uma maneira de criar strings de texto que podem incluir variáveis e expressões embutidas. Ou seja, oinnerHTML é utilizado para manipular o conteúdo de um elemento HTML já existente, enquanto a template string é utilizada para criar novos elementos HTML a partir de uma string.
Já em relação à sua segunda pergunta, é importante lembrar que uma variável que recebe um elemento HTML no formato de template string não é um elementoHTML em si, mas sim uma string que representa um elemento HTML. Portanto, ao utilizar essa variável com o appendChild, é necessário converter essa string em um elemento HTML utilizando o método createElement. Caso contrário, ocorrerá um erro porque o appendChild espera receber um elemento HTML válido como parâmetro.
Espero ter ajudado a esclarecer suas dúvidas.
Um abraço e bons estudos.