You could also set the separate controller for different components within a page, I tend to have the page controller build the master data structure and then hand it off to the component controllers (assignTo) to save on unecessary SOQL, using this delegate pattern makes it easiier to see abstract away detail and not have the master controller handle all the work.
You can load another controller as a class:
mySecondController cont2 = new mySecondController();
You can do it with extension controllers.
For Example
standardController="Contact" extensions="controller1, controller2"
Problem with multiple controllers is, a controller in the list will not know anything about the other controllers.
I would suggest using one controller with helpers and do something like a delegate pattern.
You could also set the separate controller for different components within a page, I tend to have the page controller build the master data structure and then hand it off to the component controllers (assignTo) to save on unecessary SOQL, using this delegate pattern makes it easiier to see abstract away detail and not have the master controller handle all the work.