As with many of the CMSes it is often difficult to start to learn them.
Therefore, I have the following questions: * is there a well-defined model to define pages? Is it based on templating? Is the template fixed for all pages or can it easily be changed? * What knowledge do I need to have if I want to write a custom component for Alfresco? Do I need to know JSR-170, Hibernate, JSF, XSLT, or proprietary API of Alfresco? What tools does Alfresco provide to support development of add-ons?
Most of the recent (modern) architectures are based on Spring framework. If you know Spring, then you can start with Alfresco right away. All other technologies and standards such as JSF, Hibernate, JCR can be learnt during the development time.
Most important thing to have is CMS expertize. This includes security, workflow, notifications, collaboration...thinking about the way the system is going to be used by your end users.
Alfresco WCM provides a nice framework to define your content types and the templates to display them. For example, you can define a "News Content Type (XML Schema)" and have multiple templates generating various output pages with the same content. To answer your question, it is easy to define a template and you can have as many templates as you like in the Alfresco WCM.