esc_html()
é mais ou menos sem perdas - apenas transforma a marcação HTML em texto visível codificado, para que não seja renderizado como marcação pelo navegador.
Semanticamente é escape , então ele deve ser usado para tornar a saída para a página segura.
No entanto, sanitize_text_field()
remove toda a marcação HTML, além de espaços em branco extras. Não deixa nada além de texto simples.
Semanualmente, é sanitize , por isso é usado para fazer com que entrada seja salva com segurança.