For your last question, yes, you have to iterate through every caster, in same cases even multiple times. I've just made a simple game based on shadow and light ( https://youtu.be/fNp7GeHxInI ).
Of course it depends on your game, but I think that with 2d games it's better to draw the light, not the shadow (in this way you can blend together different lights, if you render the shadows you can't in a easy way: when you draw a shadow you can't light that area anymore now that's black (there are of course tricks to avoid this problem)).
In my game I use a lot of shadow casters so, if I projected shadows a lot of them would overlapped and that's not very efficient since you're GPU has to redraw the same pixels different times. Anyway to project shadows you need the light vectors that goes to the center of your point light to each vertex of each caster, then you lengthen them till the end of your "light box" (the square which contains the light texture) or to a fixed value based on the height of the caster if the light is in an higher position. Now you have the vertices you need to draw the shadow: the polygon vertices and the end of each light vector. You draw the light and then its shadows.
That's has a complexity of O(n*k) where n are the lights and k the casters.
If you wanna render lights the algorithm it's more difficult, basically you take the light center and the polygons' vertices to draw the light triangles, but you have to calculate which is the nearest wall (the one to be enlightened). That's has a complexity of O(nk²) but I think you can optimize it to something like O(nlog(k)).
This way reduces the calculations done by the GPU (you only render the light pixels once and you don't even render the shadowed areas, before you render both and the shadows even multiple times), remember that the casters in a scene would be at most an hundred or similar while the pixel of a monitor are millions, so k² (the worst case) in this scenario is better than k if you will draw a lot less pixels.
For any question ask in comments. I've not been so specific because there are already a lot of tutorials online. (I can link them if you need).