First of all, be sure you have read the Getting Started chapter.
A configuration is a
freemarker.template.Configuration object that
stores your common (global, application level) settings and defines
variables that you want to be available in all templates (so called
shared variables). Also, it deals with the creation and caching of
Template instances.
An application typically should use only a single shared
Configuration instance. More precisely, typically
you should have one Configuration instance per
independently developed components (like projects, modules, etc.) that
internally use FreeMarker, as each should create its own
instance.
As running templates are influenced by the configuration
settings, each Template instance has a
Configuration instance associated with it, via the
corresponding Template constructor parameter.
Usually you obtain Template instances with
Configuration.getTemplate (not by directly calling
the Template constructor), in which case the
associated Configuration instance will be the one
whose getTemplate method has been called.