I'll add some salt to the soup: the dot is a reference to the current directory, the same way two dots (..) is a reference to the parent directory (the directory in which the current directory is in). If you do
in any directory (I used exact path to ls to prevent any aliases from being in effect), the first two "files" (in Unix, "everything is a file") you see are . and .., which point to the current directory, and the parent directory. This is why
seems to do nothing, because it merely would change the current working directory to the current directory (which it already is), and
brings you one level higher in the directory tree (e.g., if you were in /home/user and issued that, your working directory would then be /home). So, just as you can execute an executable using the full path (e.g., /bin/ls), you can execute an executable by typing the path to the current directory, ./ using the dot. Typing the filename without any path does not work unless that directory happens to be in the $PATH variable, which lists the directories where the given executable is searched for, in order.
In addition, typing ./somescript.sh (if it were a shell script; or ./someperlscript.pl, or ./somepythonscript.pl, etc.) only works if the script contains information about what interpreter should be used (the first line in the script, for example #!/bin/bash). Without that line it can be run by passing it to the interpreter directly, e.g. by running for example
Hope this gave you some idea of what's going on..