Justin,
You can enumerate the DockManager.ToolWindows collection to see which tool windows are registered with the manager. The ToolWindow.Active property tells you whether the tool window is currently in the layout. The State property tells you its current state. As for determining location, etc. you'd have to crawl up the control hierarchy like look at the ToolWindowContainer property and move up from there to find where it is relative to other controls.
There are a number of methods on ToolWindow you can use to dock around, etc. Please read the "Programmatic Docking" documentation topic for details.