Thank God they went with file name extensions so we didn't have to preface every source .txt file with header content to instruct the editor about what kind of content it would have.
Not quite correct. For html, that is to signal standard compliance, you can leave it away and the browser will still handle it. For the bash one, all (most) shell scripts use .sh, so you need to give a shebang to tell the loader which executable (sh, bash, zsh, csh, ...) to use
Also on Linux xdg does take file extensions into account, just executables do not
.desktop files are a Linux/Unix thing. Basically, it's a fancy shortcut, usually to an application, which allows specifying additional infos, like e.g. translated names.
In particular, the contents of the application menu are defined by just a folder filled with .desktop files.