A Flow is a multi-layer structure within which the logic lies. Dynamo's editor interfaces depict a Flow like this.
Each of the boxes displayed there with arrows pointing in and out of them is a Step. As a Flow goes, it progresses from Step to Step, evaluating the logic found within. The inside of a Step can look like this:
Within are tags, the logic operations of this Step. A single tag generally performs a single task and so the logic is formed by having a series of tags working together. They get to do their job one by one in the order they're placed in, starting with the topmost one and heading downwards. As tags are able to make use of the products of previously executed tags, placing them in a proper order can be important.
Another kind of Step is the Form. They look a bit different in the editor.
Instead of evaluating a series of tags, the Form presents to the end users when running the template. Input components, such as text fields and selections, on the Form have their values stored into the variable context, allowing tags later in the Flow to make use of them. This makes Form the primary way of user interaction. Take a look at Form for more details.
Between the Flow and the Steps is another structural layer: Segments. Segments divide the Flow into phases of its life cycle, eg. one for the Flow's start, one for its main work, and one for any finishing operations. This particular set of Segments can be seen here in the upper corner as "Before", "Main" and "After".
A Flow doesn't have to use all of its Segments, but they can be useful for organizing the logic and they also play a part in defining the routes through the Flow.
Next: Routes through the Flow