A data flow defines a flow of data from a source to a destination. You do not start on one data flow task and move to the next. Data flows between your selected entities (sources, transformations, destinations).
Moreover within a data flow task, you cannot perform tasks such as iteration, component execution, etc
Moreover within a data flow task, you cannot perform tasks such as iteration, component execution, etc
Data flow - are for just moving data from one source to another.
Control flow - provide the logic for when data flow components are run and how they are run. Also control flows can: perform looping, calling stored procs, moving files, managing error handling, check a condition and then call different tasks (incl data flows) depending on the result), processing of SSAS cubes.
If you've moving data from one location to another and it's the same each time, not based on any other condition then you can get away with a package with just a dataflow task, but in most cases packages are more complex than that.
We use the control flow for many things. First all our data concerning the data import is stored in tables. So we run procs to start the dataflow and end it, so that our logging works correctly, we do looping through a set of files, we move files to archive locations and rename with the date and delete them from processing locations. We have a separate program that does file movement and validates the files for the correct comlumns and size. We run a proc to make sure the file has been validated before going into the dataflow. Sometimes we have a requirement to send an email when a file is processed or send a report of records which could not process. These emails are put into the control flow. Sometimes we have some clean up steps that are more easily accomplished using a stored proc and thus put the step in the control flow.