core language – What is the relationship between the Wolfram executables? Where is this documented?

The relatively new wolframscript now accompanies the traditional math and wolfram binaries. I am guessing (?) that math is effectively a deprecated alias for wolfram, since I can no longer find documentation for math and the binaries are the same size. So I will focus on wolfram vs wolframscript.

It looks to me (from the documentation linked above) that wolframscript offers a superset of the capabilities of wolfram. The only comparison I truly care about right now is wolframscript -file file vs wolfram -script file (and for systems where they differ, such as Windows, WolframKernel -script file). Are these essentially identical? As one example, is there any significance to the fact that the wolframscript documentation does not refer to “script mode” but the wolfram documentation does? (My presumption is no, but I hate to rely on presumption.)

Finally, does any of this link to file naming conventions. It seems that the extensions .m, .wl, and .wls all remain in use, and this use appears inconsistent in the documentation. As a striking example, the “Code from a File” example for wolfram literally mixes up whether the example is working with file.wls or test.wl. What is the semantic information that is intended by the different extensions, if any? (My presumption is that .wls should be reserved for files that are made executable on a platform, but I hate to rely on presumption.)

I am very interested in educated guesses by experienced users, but obviously, pinning this down in the documentation would be ideal.