In most cases it is enough to design the landing page and couple of aggregates. From there normally the look and feel established in those can be applied throughout the entire design, using CSS avoiding separate mock-ups for every single page. Though, there are cases that it may be necessary to design mock-ups for pages that have a high level of contrast to that pf the mock-ups created. The best thing to do is create design for pages that have a high amount of contrast in the content. Content dictates design so pages with similar content will most likely take on a similar design, or something close. The most important design is always the wrapper that encompasses the requested content. The wrapper can sometimes be enough in itself, supplying general look and feel, location of constant menus, rails, etc common to every page.
In my experience, a complete static mock-up always results in less time writing front-end technologies to achieve the design goal. The more guess work that eliminated the better. Guessing takes time. When something is not accounted for in a design mock-up that is time the person writing the front-end technology has to take to go through a process of trial and error. When most, if not all major visual decisions have been resolved in the mock-up its just a matter of recreating it than playing designer.
Also, as much as people would like to believe design is completely separate from HTML, that isn’t quite true. There are always situations that require modifications of HTML given a certain design goal due to limitations with CSS, always. Especially if your working with designers who share the same passion for design as you do programming. In the case of delivering work that doesn’t look like all the other crap out there.
That isn’t to say its not good to start with the HTML first, but its always more efficient to have an idea of what the end design will look like to account for any possible edge cases, that CSS it is not entirely adequate for down to support for IE6/IE7. That is one of the big ones. Modern technology does make many things possible with only CSS that once were not. The issue becomes judgment call at that point – whether to modify HTML to account for older-browsers or degrade. Its always a tough issue ion the real world, of non-static, fully dynamic web applications.
I highly encourage mock-ups. To me mock-ups are equivalent to that of sketching for a logo – absolutely necessary. Especially if the people developing a site don’t have a creative bone on their body. The less guess work eliminated, the more developers will like the designer. The road block always comes when I have to take time out of development and make some actual decision designs, that were not accounted for. Its to be expected, considering the medium but like is always easier when design decisions are eliminated and its just a matter of recreating a supplied visual top to bottom.
To that end the mock-up should really be the final design. Think of as exactly what a single page of the website will end up looking like. If your not satisfied with it redo it until you are. Bad things always happen when you start with a mock-up that isn’t fully complete, like wasting countless hours changing colors, fixing spacing in CSS, or god forbid on change getting the creative juices flowing that result in heavy modification of the initial layout. All of which are much easier to go through a trial and error process in a design program than CSS.
Design work is fun sometimes but as a front/back-end developer I rather not deal with it. being supplied complete mock-up(s) makes that mostly possible.