This is nothing more other than visually separating classes with the intention of grouping them.
The example you gave both do the same exact thing.
The brackets are allowed in the class attribute and are technically valid so long as they have spaces between the bracket and the class itself.
Additional information about this technique can be found on csswizardy, and for posterity, here is an excerpt explaining how he uses it:
How it works
There is no hard and fast rule as to how and when to begin grouping
your classes, but the guidelines I’ve set for myself are:
There must be more than one ‘set’ of classes. One ‘set’ must contain
more than one class. This basically just ringfences any groups that
need it, for example:
<!-- Only one set. Nothing needs grouping. -->
<div class="foo foo--bar">
<!-- Two sets, but only one class in each. Nothing needs grouping. -->
<div class="foo bar">
<!-- Two sets, one of which contains more than one class. This set needs grouping. -->
<div class="[ foo foo--bar ] baz">
<!-- Two sets, both of which contain more than one class. These sets needs grouping. -->
<div class="[ foo foo--bar ] [ baz baz--foo ]">
How you group them
can be entirely your choice, the concept here just deals with the fact
that we’re grouping things at all.