Dependent components in change sets
Key Takeaway
Add every dependent component the target org doesn't already have, or the deployment fails. The "Component Dependencies" page doesn't list some components a flow references, such as the approval process behind a "Submit for Approval" element, so add those manually.
A change set moves metadata components from one Salesforce org to another, usually from a sandbox to production. Many components need other components to exist before they can work. So a change set has to include the needed components that the target org doesn't already have. You use "View/Add Dependencies" to find and add them. For flows, the page behind that button doesn't show everything, so you add some components by hand.
What a dependency is
For example, an Apex class that refers to another Apex class and to a custom object depends on both of them.
Outbound change sets include both direct and indirect dependencies. An indirect dependency is a component that your component needs through another component.
Apex Class A depends on Class B and Object B. Class B depends on Class C and Object C. When you add Class A to an outbound change set, the Component Dependencies page lists Class A, Class B, Class C, Object B and Object C. Class A doesn't depend on Class C or Object C directly. They are still required, because Class B needs them.
Because indirect dependencies are included, a change set can list unexpected components or a high number of dependencies, even for a single custom object. Those dependencies are valid and required for the deployment to succeed.