Bloqs is like a Fluid field, but on steroids. It gives you the freedom to build robust repeatable content modules using the atomic design pattern. Functionally Bloqs shares more similarities with ExpressionEngine's native Grid field. Every row in the Grid field has the same custom field options because they all share the same columns. Think of Bloqs as a Grid field where each row has different columns, and you can place the rows in any order you want.
If a Grid field has rows and columns, then a Bloqs field has bloqs and atoms. You create a bloq, then add one or more custom fields (aka atoms) to it, and then assign that bloq to one or more custom fields in a channel. Unlike the native Fluid field, since a single bloq contains multiple custom fields, those fields can work in conjunction with each other. One field can contain your text, the other one might be a select menu determining how that text is displayed. If you're using nested bloqs, the fields within a single bloq can be even more powerful as their values can cascade down to child bloqs.