The collision check conditions only need to be the first condition that picks for that object type. (It's just easier to phrase the advice as "make it the first condition".) You can actually have any number of conditions either in the System object or unrelated object types, so long as the first condition in the whole event branch that picks from that object type is the collision check event - then it still uses collision cells.
You can still get away with picking instances before the collision check, as long as you pick a few instances. For example:
+ Sprite: pick a single instance
+ Sprite: test overlap with Sprite2
-> actions
This doesn't use collision cells, but only needs to collision check a single instance, so is fast anyway. However if you did:
+ Sprite: pick 1000 instances
+ Sprite: test overlap with Sprite2
This doesn't use collision cells and forces 1000 collision checks. If you put the conditions the other way round it would likely have done fewer collision checks based on objects in the same cell. Whether or not you can get away with this depends on how many instances you pick and whether it's less than the number of objects in the collision cell, which is pretty hard to estimate. Therefore the recommendation is to always put the collision check first, since it removes the worst-case possibility of forcing a large number of collision checks.