Restrict nodes and terms per user
To create something both so specific and complex, you probably won't be able to find modules that will solve this problem for you 100%. So to be able to do this you will have to develop some of this yourself (or pay some one to do it for you)

You best bet will be to start of with organic groups, rules might also help. The fact that you want users to be able to create other users complicate things, as that is something usually done by admin users. Most likely you will have to create your own custom form to handle this.