Frameworks are bundles which contains a linkable library (usually a dylib), the associated resources and headers for development.
There are so called “public” and “private” frameworks. The former are usually well documented and prepared for use by general developers, while the latter are (supposed to be) restricted for internal use only. Public frameworks can be found in /System/Library/Frameworks, and the private ones in /System/Library/PrivateFrameworks. Other than these artificial division, there are no difference between public and private frameworks.
Structure of a Framework
Frameworks should have an extension of .framework. Headers, if any, should be stored in a subdirectory called Header.