The way CSS works for screen/print is that you first create your layout for the screen with all of the design elements that you need--like the navigation bar, etc.In the print stylesheet (BTW use external CSS stylesheets) hide the navigation, chapter titles, etc. and change the previously hidden page numbers to show (show=print). It is the same HTML page. The only thing that changes is which external CSS stylesheet is used (screen/print).
As for A4/letter-size printing. A lot will depend if you use a fixed or fluid width design. This means will the column widths change or not when the browser is resized. BTW, just because you use a fluid design for screen doesn't mean that you have to do the same for print. To push matters further it is possible to have a specific CSS stylesheet for A4 and another for letter-size. To accomplish this you'll need to use javascript so the user can make the selection. Google "Css alternate sytlesheet".
Check out this link:
http://www.alistapart.com/articles/alternate/
Most layouts can be accomplished without tables, which means that the page file sizes are reduced. If you have more than just a few pages the reduced file sizes really starts to add up.
If I understand you correctly your main navigation (that appears on on every page) will link to the first page of every chapter as well as to the index page, which is the TOC.
Have you considered using fly-out panels? That is when a user hovers their mouse over a chapter link on the main navigation a panel flies out with all of the sub pages associated with that chapter. It makes for a compact navigation system that also allows the user to quickly navigate from one page to another throughout the book.
Using fly-outs will also eliminate the need to have additional navigation at the foot of every page that leads to the first page of the chapter. It is also worth mentioning that the fly-outs can be done entirely with CSS.
On Activ's site there is a script for bookmarking pages. It allows the user to close the book and when re-opened will automatically return to the last page visited. Or were you thinking in terms of book marking like Favorites in a browser? If that is the case you're going to have to create a script that writes a file with the links so the information will be available from session to session. That is something I haven't done.