Facets represent various frameworks, technologies and languages used in a module. They let IntelliJ IDEA know how to treat the module contents and thus ensure conformity with the corresponding frameworks and technologies.
Using facets enables you to download and configure the necessary framework components, have various descriptors generated automatically and stored in proper locations, and so on.
Most facets may be added to a module irrespective of whether other facets exist.
There are also facets that extend other facets. Such facets are possible only if a module has their parent facet. For more information, see Available Facets and Their Dependencies.
The list of available facets depends on which plugins are currently enabled in IntelliJ IDEA.