you don't need to build a new page for each content.
you define new pages only if you want to have different portlets shown (or change the position of windows in the page, etc...).
if you change the "structure" of the page.
to have the same "kind/structure" of page, but with different content in the portlets (such as CMS portlet, or other portlets for dynamic content), you should use the same page, but passing a parameter to the portlet so it show the content requiered.
the CMS portlet is working this way : you can define the path of the file from the repository in the url.
the prefix in the url is "content" : /content/your/path/in/repository/file.html
see the reference guide for explaination of that.
the other portlet should work the same way.
in your menu, you put the url that say : "tell to the cms portlet to show this html file".