Is there a controller for each page, that simply returns a view that contains all the HTML and CSS?
It is a common practice to have 1:1 relation between views and controllers. When implementing MVC, view would usually represent a page in website (like your user profile in StackOverflow) and it would change according to model layer state (think: you viewing your profile or somebody's else).
A specific controller would be responsible for dealing with all (or most of) the user interaction from that page.
In properly implemented MVC or MVC-inspired design pattern, the controller would only change the state of view (which was provided to it in the constructor). Generation of response (whether HTML page, HTTP header or JSON file) is handles by view itself. Since controller should not be creating the view, there is not point in returning it.
Does the controller pull header and footer information from other controllers, and then pull the main content from a different view?
That would be the behavior if you were using HMVC pattern (which is actually not directoly related to classical MVC).
In proper MVC or MVC-inspired structure, the view would acquire the data from model layer and, based on that information, assemble the HTML page from multiple templates. If you want to learn how to make simple template in PHP, read this article.
I guess I am not understanding how that all works out.
In that case you should start by reading "GUI Architectures" by Martin Fowler. And if you are still new to the whole OOP-thing, watch every lecture, that is listed at the bottom of this post.
The main topic
If you have large amount of static pages, it is possible to use MVC design pattern to create the site (you would basically treat them as cached structures, which view can assable), but it might be a bit pointless.
MVC is a complicated design pattern, which is aimed at bringing order to large applications by applying SoC.
MVC is not a magical sprinkling, that makes it all better, when applied to the forehead.