Great writeup. As someone who made the switch to Git last year, I, too, found it frustrating at first. It does have a different paradigm than other SCM systems. After much poking at the documentation I could find, I ended up asking some people with more experience with Git and then things started to become clearer. I'm still not all the way there, but I'm learning.
One thing, about the 4 file states, the 4th one is only necessary when you are dealing with a remote repository, which I think most users will, but it isn't strictly necessary if you are working on something solo. I still use Git and remote repos for my solo projects, but I'm doing that mostly to enable my method of deploying code, and working on it on different machines. So practically speaking, there are four states.
no subject
One thing, about the 4 file states, the 4th one is only necessary when you are dealing with a remote repository, which I think most users will, but it isn't strictly necessary if you are working on something solo. I still use Git and remote repos for my solo projects, but I'm doing that mostly to enable my method of deploying code, and working on it on different machines. So practically speaking, there are four states.
One thing that took me seemingly forever to figure out was that I can have my own remote repositories without relying on GitHub or Gitorious. I have a rough write-up at http://wiki.tamaratemple.com/Technology/HowToSetUpYourOwnPrivateRemoteRepository .
Another thing was including code that is under a separate Git in a project, and the answer to that was submodules.
It's a wonderful tool, I like it a lot now.