They are a little different in how the "differences" are presented to you.
Let's suppose that the last commit added
System.out.println("Pelican");
And the commit before that added:
System.out.println("Coot");
Then git diff HEAD~2 HEAD
will show those lines with plusses (things that were added), whereas git diff HEAD HEAD~1
will show those lines with minuses (things that were removed).
i.e. "what changed to get from HEAD~2 to HEAD" or "what would change if we started at HEAD and went back to HEAD~2"