Git's graph is of complete versions, but much of your text talks about it like it's a graph of changes. git rebase analyses an arm of the graph, turns it into a set of changes, tries to work out what those changes would look like if they were attached elsewhere, and then produces that.
It doesn't sound as simple that way, but it's important to keep in mind that git does not track changes and instead rederives them continually.