Here are the primary components to Chef (Chef Concepts Page):
Chef Server: Chef Client downloads environment information from this. Also provides a Web interface to manage nodes.
Chef Client: Service on each Node. Expands Run-List by downloading it's contents from the Chef Server and applies it to the node.
Knife: Command line interface to Chef Server or Client.
Environment: Nodes are part of an Environment. Pins Cookbook versions. There is a 'default' environment which is why Attribute files are called default.rb.
Node: Chef object that stores 'Attributes' and 'Run-List' meta-data about the host.
Chef Repository: SCM checkout that stores the environment configuration files e.g cookbooks and roles. These are uploaded to the Chef Server using the Knife tool.
Attribute: Environment specific configuration data.
Run-List: Node specific ordered list of Roles or Recipes
Role: Generic way of applying Attributes and Run-Lists to a Node. Stored in Chef Repository
Cookbook: A directory under the cookbook directory of the Chef Repository; normally for a specific service or application. Contains Recipes, Templates and Attributes as well as other configuration files. Normally part of a separate SCM repository.
Template: Usually represents a dynamic configuration file, containing tokens that will be replaced by Chef.
Attribute: Environment specific configuration data.
Data-Bag:
Recipe: A file that contains a coherent set of Resource configurations.
Resource: A kind of interface to a set of Providers. It represents something that can be configured on a Node and normally contains the set of data used by the Providers.