The sites that use separate directories are usually not real directories, but are still dynamic pages. They use something like apache mod rewrite to turn /id/1/p/2 into ?id=1&p=2.
As for making your CMS output static pages, if all you are doing is looking up the page in the database, that is not a big load on the database. If you are doing complex work to assemble the page, or hitting the database for other reasons, you might save yourself some work.
As far as where to put the pages, that depends on your users's needs and how the navigation is set up. There is nothing wrong with putting everything in to an "html"directory when you generate the page. If your CMS allows you to have categories, then you could also put them in corresponding directories. You could still have URLs like /some/key/words/page, and use apache to turn that into variables that does a page lookup behind the scenes.