./ vs normal execution
This is due to the behaviour of your shell that is running in there Terminal.app. It is probably the bash shell

When you ask the shell to run a command if you provide an absolute path (that is beginning with / as your second one does) it will try to execute that program at that path. If you provide a relative path (i.e. one not starting with /) it will try to create an absolute path by prepending the directories that are in your PATH environment variable to what you typed. As your current directory or . is not on your PATH it cannot find  a file to execute. If the path begins with a . the it will repave that by the absolute path of your current directory and thus get a path that can be executed.