The "Control Hierarchy" topic in the documentation talks about the structure of controls in the DockSite and what can be in what. The "Lifecycle and Docking Management" topic also covers the methods you can use to programmatically move docking windows around. Check those out.
1) You can use the Dock method to dock against other docking windows or containers. If you do Dock(otherToolWindow, Direction.Content) then it will become tabbed with the other target tool window.
2) Each docking window has a ParentContainer property that would be the parent "group" of docking windows. You can look at that. Or if you mean you want to get the next container, you'd need to look at that container's Parent and if it is a SplitContainer, look at the next container within that.