Elements are small components that are used by multiple higher order components. They are not meant to be used directly to author the content of a page.
Patterns are components that can be used by content editors or template developers to author the content of a page. They usually make use of elements.
Template components are the main parts of a template, but not usable by content editors. Instead they are used by template developers to construct templates.
Templates are the overarching components that represent a complete page. They usually make only use of template components.