If the name of a file with execute permission bits set is typed on the command line, or if the name of such a file is passed to one of the exec*() variant calls of the C runtime library, the Linux kernel will attempt to load and execute it.
The first thing the Linux kernel does is read the first few bytes of the file, looking for known "magic" sequences. One of those magic sequences can also be interpreted as the ASCII string "#!" also known as "hash bang" and shortened to "shebang". When the loader sees that, it will interpret the remainder of the line as the name of another file to exec, passing the first file as an argument. Another magic value is "\x7fELF" which is a classic binary executable file like, say, /bin/sh itself. Note that the default for the kernel loader, if the file has no recognizable magic, is to exec /bin/sh and pass it the name of the file as the first argument -- the equivalent of having a shebang of "#!/bin/sh".
In effect, marking the script as executable using chmod +x ./do_one_thing.sh
together with a shebang of "#!/bin/sh" is the equivalent of sh ./do_one_thing.sh
. The "file extension" or other DOS concepts are really irrelevant outside of DOS, its ancestral OSes like CP/M, and its descendant OSes like Microsoft Windows.
If you want the best level of foolproofness, mark the files as executable and use the appropriate shebang. Don't rely on humans to do the right thing.