If we checkout a commit instead of branch, the HEAD (pointer to branch) will point to a commit instead of the name of branch (call this commit A). This is called a detached HEAD state. If I created a new commit - commit B, that new commit would be lost (okay, not immediately maybe) because there's no way we can reference it (actually, I don't get it, because every commit has an ID, right? We can reference it once we know the ID, but for some reason Git will remove such commits. It's probably that Git can't tell to which branch the commit belongs to).
Commits know only their parent, but not children. Is there a reason for this? If commit A had a reference to commit B, we could forget about detached HEAD problems, right? But I guess that would cause some other issues - what are those?