Each child flow can be created to achieve one specific purpose. A well-structured system of flows will enable child flows to behave like a function which can be called when needed. This means that several flows can call the same child flow. Read more about Child Flows
Take the example of sending an email. The flow that sends the email can be created independently and it can receive parameters such as the recipient’s email address, the message title and the content
Other flows can then pass those parameters to the child email flow to trigger the sending of an email. That’s a great way to send an email using a single flow and avoid duplicating the same code multiple times
Files and variables can be passed to child flows so there’s no good reason not to use them. Here is a recent post on how to Pass a JSON Array to a Child Flow
Bear mind that for a parent flow to call a child flow both must be in the same soluton