A dot "." means the directory you are in now. ".." is one directory level down. So when you type "./foo" it means you want to execute the "foo" command in the directory you are in. If you do not prefix the "./" to the command then your shell will only look for the command within the set of directories in the environment variable $PATH. And, FWIW, a tilde "~" refers to your home directory, so instead of "/home/me/foo" you could type "~/foo".
Typing "/home/me/./foo" is the same as "/home/me/foo". It's like saying you're changing to "home", then "me", then the same directory, then executing "foo". You can do lots of weird things like that, like "/home/./me/../me/foo", etc.
Sometimes the $PATH environment variable will already include the "." directory (then instead you can just type "foo" instead of "./foo"), but it's a practice generally frowned upon as it can lead to accidental execution of non-programs. It's a debatable rule, for sure, but don't expect to find "." included in $PATH for any popular Linux distribution.
If you're writing scripts it's typically best to use the absolute path, e.g. /home/liudr/foo. It's easy to goof up your scripts' current working directory and use a path incorrectly.
All of these behaviors are identical in Windows as well AFAIK. It's actually
not a Linux thing
