I wouldn't be able to tell you too much about the internals of VSCode.
The 'trouble' with git is, though, that what happens when you run the wrong command can vary from "easy to fix" all the way to "you just lost your work, you shouldn't have run that command".
Which means you need to either be very careful anytime you run git, or you need to learn more about git to avoid the footgun aspects of it.
The downside to this though is the type of novice most likely to make a mistake in "losing" their data will also not know how to recover their data.
If it's been checked into a commit, sure.
But if you discard changes which haven't been checked in, then the work is lost.
But I don't think I should need to fully understand its internals for it to be "grokkable", an elegant thing could still be grokkable regardless.
It's possible though that the tasks: diffing, branching, merging, rebasing, tagging, etc., are too elusive for "elegance", ha ha.
I might add though that simple diffing, branching, merging I do more or less grok. Perhaps if git had stopped there, like my understanding did, I would feel more comfortable with it ... imposed limitations be damned. I suppose in fact I only use git in this limited capacity anyway. It's only when someone else on the team does something clever (or I screw something up)....