contain the same functionality and logic that are used for standard Salesforce pages.
need finer control for how information is accessed for your page, you can write a custom controller or a controller extension using Apex.
extends the functionality of a standard or custom controller.
Can be used with standard objects and custom objects.
Only one Apex class is used.
Multiple Apex classes separated by comma are used.