Fala Eduardo, tudo bem? Espero que sim!
Utilizando as template strings nós não estamos criando um elemento html e sim uma string comúm, essa string vai ter apenas métodos de uma string como toLowerCase, toUpperCase, etc... Fazemos dessa forma quando vamos redefinir o html de um elemento ja existente utilizando o innerHTML que ja espera uma string que possui uma estrutura html, como essa:
"<p>Olá, eu sou um paragrafo</p>"
Agora, o createElement cria realmente um elemento html que possui métodos de elementos html como innerHTML,innerText, appendChild, etc...
A diferença é que, como utilizando template string você cria apenas uma string e não um elemento, você não consegue colocar um ouvidor de elementos nele (addEventListener), ja ao utilizar o createElement é possível fazer isso, ja que ele cria um elemento html.
Espero ter ajudado, abraços e bons estudos :D