Headless significa que o aplicativo está sendo executado sem uma interface gráfica com o usuário (GUI) e, às vezes, sem nenhuma interface com o usuário.
Existem termos semelhantes para isso, que são usados em contextos e usos ligeiramente diferentes. Aqui estão alguns exemplos.
Headless / Ghost / Phantom
Este termo é bastante usado para clientes de peso. A ideia é rodar um cliente em modo não gráfico, com uma linha de comando por exemplo. O cliente será executado até que a tarefa seja concluída ou interagirá com o usuário por meio de um prompt.
O Eclipse, por exemplo, pode ser executado no modo headless. Este modo é útil quando se trata de executar trabalhos em segundo plano ou em uma fábrica de construção.
Por exemplo, você pode executar o Eclipse em modo gráfico para instalar plug-ins. Não há problema se você fizer isso sozinho. No entanto, se você está empacotando o Eclipse para ser usado pelos desenvolvedores de uma grande empresa e deseja manter-se atualizado com todas as atualizações, provavelmente deseja encontrar uma maneira mais fácil e automática mais reproduzível.
É aí que entra o modo headless: você pode executar o Eclipse na linha de comando com parâmetros que indicam quais plug-ins instalar.
O bom desse método é que ele pode ser integrado a uma fábrica de construção!
Sem rosto
Este termo é bastante usado para aplicações em larga escala. Foi criado por designers de UX. Um aplicativo sem rosto interage com os usuários de uma maneira tradicionalmente dedicada aos usuários humanos, como e-mails, SMS, telefone ... mas NÃO uma GUI.
Por exemplo, algumas empresas utilizam o SMS como porta de entrada para o diálogo com os usuários: o usuário envia um SMS contendo uma solicitação para um determinado número. Isso aciona serviços automatizados para executar e responder ao usuário.
É uma boa experiência para o usuário, porque pode-se fazer algumas tarefas a partir do telefone. Você não precisa necessariamente de uma conexão com a Internet e a interação com o aplicativo é assíncrona.
No back-end, o serviço pode decidir que não entende a solicitação do usuário e sair do modo automatizado. O usuário entra então em um modo interativo com um operador humano sem alterar sua ferramenta de comunicação.