To add to the other excellent answers, here's where the name for "stage" comes from:
I checked the dictionary for the meaning of stage and none of the
meanings was related to source control concepts.
In English, "to stage" can mean
organize and participate in (a public event): UDF supporters staged a
demonstration in Sofia
(from http://oxforddictionaries.com/definition/stage )
The name "staging" for the git feature derives from this meaning: When staging, you are preparing and organizing a commit. Of course a commit is not quite the same as a performance, but it is an important event in a VCS :-).