This is really great!
I'd suggest one edit in the first entry:
“heads” are “branches” --> a "head" is the end of any given "branch"
This makes it a little clearer when talking about detached head state, since switching to a commit on a branch can still leave you detached.
I was confused by that when I got to your detached head description, so I double-checked.