There are lot of ways for deploying metadata from one Sandbox to Other or to Production. But there are certain points remember while using change set or Metadata API.
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 can’t use change sets to rename or delete a component.
- 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 orgs requires a deployment connection.
- Change sets can only be sent between orgs that are affiliated with a production org.
- Each org must be authorized to send and receive change sets
Other Points :
- Refreshing a sandbox deletes and recreates the sandbox as a new copy of the production organization. In effect, this reverses any manual access changes you have performed. If you created users in a sandbox, they no longer exist; if you changed a user’s permissions and access settings, those revert to their values in the production organization. This means that after a refresh, any access changes you performed must be repeated in the new copy. To avoid this process, you can create user templates in your production organization, and then activate them in the sandbox organization.
- Unsupported Metadata Types in the Force.com Metadata API Developer’s Guide
You can learn about Development Lifecycle and Deployment from Salesforce University eBook.