Neither -- nor . are git-specific:
The first -- argument that is not an option-argument should be accepted as a delimiter indicating the end of options. Any following arguments should be treated as operands, even if they begin with the '-' character.
(from https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean-also-known-as-bare-double-dash/11378).
. is the current directory. 
git checkout is for switching between branches
If you look at https://git-scm.com/docs/git-checkout, this command has the form 
git checkout [<tree-ish>] [--] <pathspec>…
so it
Overwrite[s] paths in the working tree by replacing with the contents in the index or in the <tree-ish> (most often a commit).
"Paths" are . (the current directory) and "the <tree-ish>" is HEAD (the current commit Git points to), because you didn't specify another.