Es cierto que el sistema puede deducir el formato en función del contenido (o de la cabecera, si es binario), pero eso en algunos casos, por ejemplo como dices, archivos de texto, puede no ser del todo eficaz, por ejemplo supongamos que se te cuela un carácter raro en un .txt, el sistema podría considerarlo un binario.
Por otro lado, crecen los archivos que son de texto pero en un formato o lenguaje concreto, xml, html, csv, php, python... cualquier lenguaje interpretado en realidad, la extensión puede ayudar a saber que tenemos delante.
Y por último pero no menos importante, lo que comentaron ya arriba, haces un ls y ya ves lo que tienes por extensión
Lo bueno es que si en win te cargas la extensión, te las tienes que apañar, recordarla, acceder con un editor hexadecimal e intentar deducirla... en linux/unix, salvo para diferenciar un texto que es código de otro que es para leer, la extensión es un formalismo simplemente: no te la pueden dar por queso y meterte un programa como imagen