https://love2d.org/wiki/Fixture:setFilterDataGroups, categories, and mask can be used to define the collision behaviour of the fixture.
If two fixtures are in the same group they either always collide if the group is positive, or never collide if it's negative. Is the group zero or they do not match, then the contact filter checks if the fixtures select a category of the other fixture with their masks. The fixtures do not collide if that's not the case. If they do have each others categories selected, the return value of the custom contact filter will be used. They always collide if none was set.
There can be up to 16 categories. Categories and masks are encoded as the bits of a 16-bit integer.
Can somebody please enlighten me? I guess this triple and the different behaviors make sense, but I can't figure it our right now, so:
1) In what relationship are group, category and mask to each other? Hierarchical? Independent? None at all?
2) Why are there three values?
3) Why these different behaviors? (positive, sameness, etc.)
4) An example (especially for the wiki) would be great