Unmanaged Package:
- Unmanaged packages are typically used to distribute open-source projects or application templates to provide developers with the basic building blocks for an application.
- Once the components are installed from an unmanaged package, the components can be edited in the organization they are installed in.
- The developer who created and uploaded the unmanaged package has no control over the installed components, and can’t change or upgrade them.
- Unmanaged packages should not be used to migrate components from a sandbox to production organization. Instead, use Change Sets.
Managed Package:
- Managed packages are typically used by Salesforce.com partners to distribute and sell applications to customers.
- Once the components are installed from a managed package, the components cannot be edited in the organization they are installed in.
- Managed packages are also fully upgradeable.
- To ensure seamless upgrades, certain destructive changes, like removing objects or fields, can not be performed.