It's a convention so the *nix shell knows what kind of interpreter to run.
For example, older flavors of ATT defaulted to sh (the Bourne shell), while older versions of BSD defaulted to csh (the C shell).
Even today (where most systems run bash, the "Bourne Again Shell"), scripts can be in bash, python, perl, ruby, PHP, etc, etc. For example, you might see #!/bin/perl or #!/bin/perl5.
PS: The exclamation mark (!) is affectionately called "bang". The shell comment symbol (#) is sometimes called "hash".
PPS: Remember - under *nix, associating a suffix with a file type is merely a convention, not a "rule". An executable can be a binary program, any one of a million script types and other things as well. Hence the need for #!/bin/bash.
./yourscript.extension, for example,./helloworld.pyor./helloworld.sh, it will look for the interpreter at that top line, which would be#!/bin/pythonor!#/bin/bash, whereas when executing the script likepython helloworld.py, the first line will not be observed because it is commented out. So it is a special sequence for the shell/kernel.