origin is an alias on your system for a particular remote repository. It's not actually a property of that repository.
By doing
git push origin branchname
you're saying to push to the origin repository. There's no requirement to name the remote repository origin: in fact the same repository could have a different alias for another developer.
Remotes are simply an alias that store the urlURL of repositories. YouYou can see what urlURL belongs to each remote by using
git remote -v
In the push command, you can use remotes or you can simply use a urlURL directly. An example that uses the urlURL:
git push [email protected]:git/git.git master