Should the subsurface modifier be also applied if using Boolean, or is it best not to use it at all?
There are no rules that fit every situation. You can use any modifiers together to reach some result that you happen to be after. You can use Subdivision Surface modifier after or before Boolean if that gives you your desired result - that's all there is to it. This is true with any other modifiers and their combinations as well. You should use whatever works best for you and your specific situation.
When should I use it and when not for example?
Once again it depends only on whether it gives you your desired result or not. You should obviously not use it if the resulting geometry is problematic for you like in your example with jagged and pinched edges unless you are prepared to correct it manually.
It is good to use if you need the geometry to remain editable/procedural for example. I always use it to make spotlights or led strips in the ceiling when they are recessed in my interior visualisations because if the lighting is changed later it is very easy for me to edit the "cutter" object that is hidden for the render.
Of course you can use booleans while modelling regular stuff, but if you wish good result you will often need to clean it up manually so the use of it is quite limited and quite often you will be better off using some other techniques. Basically, I think one could say it should be used when you can get away with it.
What should I be taking into consideration when using this modifier?
You should be aware that it can produce unexpected results if used on objects that have overlapping faces or edges or vertices very close to each other. You should also always be aware of the topology of the objects you use and if you are going to need to fix it and obviously then fix it after the boolean operation.