Não há necessidade de a extensão do arquivo corresponder a algo específico, como você descobriu corretamente.
Em sistemas tipo Unix, os tipos de arquivo geralmente são derivados do conteúdo do arquivo (ou seja, o "número mágico" ou outras estruturas características nos primeiros bytes) e não do nome. Você também pode omitir completamente a extensão, o que geralmente é feito para executáveis.
Verifique o file
comando, ele mostra as informações que você pode descobrir sobre um tipo de arquivo a partir do seu conteúdo.
Para um script executável, o sistema espera um chamado "shebang" na primeira linha, que se parece, por exemplo, com
#!/usr/bin/env python3
e indica qual programa executar como intérprete com o arquivo de script como argumento. Se você executar um arquivo de texto sem tal shebang, ele usará seu shell padrão, ou seja, o Bash para tentar interpretá-lo.
Portanto, nos sistemas Unix / Linux, as extensões de nome de arquivo são principalmente uma dica (mas nenhuma garantia) para o usuário humano reconhecer rapidamente o que esperar que um arquivo específico contenha. Também é uma convenção que pode ajudar, por exemplo, a encontrar arquivos mais rapidamente.
Observe que existem algumas exceções, onde o nome e a extensão são importantes (por exemplo, alguns arquivos de configuração do sistema que devem seguir uma convenção de nomenclatura, ou muitos visualizadores e editores de imagens também exigem a extensão para indicar o tipo de arquivo).
Você também pode dar uma olhada em As extensões de arquivo têm algum objetivo (para o sistema operacional)?