A client comes up with an idea of how they want to dispay content on a page.
You create the blocks that meet the client's content requirements. Each block can contain 1 or more fields, for example, a WYSIWYG, image, or video field. Or all 3.
Clients build pages using the blocks you define. It's a win win! They get amazing flexibility, but within the contraints you define.
As the developer, you control 100% of the HTML markup and styles that render blocks to generate the final product, while the clients can focus on the content.