This answer applies to Farseer Physics 3.3.1 (current stable version at time of writing)
Widescreen is just a performance optimization. He quickly determines what can collide, so that things that cannot collide do not have a more expensive narrow-phase collision with detection.
In my experience, events at Farseer are not designed as well as they could have been. I found that I had to change them for my own game, but, fortunately, this code is actually not so difficult to read and modify. In addition, the documentation is inaccurate in several places.
Here, events in the physics of Farser are actually made:
BeforeCollision occurs when wide-phase registers a new potential collision before it creates a Contact object for two devices. You can block Contact creation by returning false to the event handler.
The existence of a Contact does not necessarily mean that two luminaires are in contact - simply that the wide phase has succeeded. A Contact can touch / not touch, and they can be turned on / off (they start with enabled and not touching).
OnCollision occurs when a Contact changes from not touching to touching. You can disable the contact by returning false. Oddly enough, you can re-enable the contact, which at this stage turned off another event handler if you return true (this is one of the things that I changed for my own game).
Only activated, touching contact has any effect on physical modeling.
OnSeparation is the opposite of OnCollision : it fires when a contact changes from touch to not touch. There is no way to disable / enable a contact.
AfterCollision is called for every Contact that participates in physical modeling on this frame (like this: those that are on are touched, not on the back island). It is called after the physics simulation stage, but before cleaning - especially before Body.Force and Body.Torque is cleared (convenient for sound effects, etc.).
Usually you simply use these events to trigger your effects - particles, sounds, game mechanics, such as destructive objects, etc. In this case, you subscribe to what you want, do what you like, and then return true (without disconnecting / not blocking the contact).
This gets a lot more complicated if you want to mess with the physics engine or disconnect contacts (especially when you can accidentally turn them on with another event handler, as I mentioned earlier). If Farseer inline events do not work for you, then it’s wise to go into his code and add your own. At this advanced level, it’s practically necessary to build from the source so that you can accurately examine what is happening.