The easiest way to send configuration changes from one organization to another is to use a change set. To send customizations from your current organization to another organization, you create an outbound change set. Once you send the change set, the receiving organization sees it as an inbound change set.
Change sets can only contain changes that you can make through the Setup menu, and they don’t support every type of component that can be customized. You also can’t use change sets to rename or delete a component. If you make changes that aren’t supported by a change set, you can migrate them manually by repeating the steps you performed in the other organization.
Some components are dependent on other components. For example, the custom fields of a custom object rely on the existence of that custom object. If you try to migrate those custom fields to an organization that doesn’t contain the custom object upon which they’re dependent, the deployment will fail. When you create a change set, it’s easy to view and add the dependencies to ensure all the necessary components are migrated.
Sending a change set between two organizations requires a deployment connection. Change sets can only be sent between organizations that are affiliated with a production organization—for example, a production organization and a sandbox, or two sandboxes created from the same organization.
A deployment connection alone doesn’t enable change sets to be sent between organizations. Each organization must be authorized to send and receive change sets. This added level of security enforces code promotion paths and keeps organizations’ setup metadata from being overwritten by mistake.