I will not dive deep into explaining, but show some basics.
Main thing here is to have dynamic Vertex group, created by Vertex Weight Modifier, that correspondes with collision spots.
- Duplicate mesh you want to cut (in this case I prefer Alt+D to share data);
- Create new vertex group, add all vertices in it;
- Add Subsurf modifier with 2-4 levels of division. High levels produce more accurate collisions, but are slowing things down.
- Add Vertex Weight Proximity modifier with Laser-mesh as target (set it to geometry - faces, adjust lowest/highest values).
- Add Mask modifier with the same Vgroup as in previous modifier, but invert it with Arrows button near Vgroup name. At this step, all geometry that is too far from Laser faces will be cut off in order to emit only from intersections. NOTE: Mask modifier is needed, because Density option in PS is kind of glitchy with dynamic Vgroups.
- If you need to render emitter object along with particles, you can optionally add Shrinkwrap modifier (target is original mesh) with a small offset
to avoid Z-fighting.
- Add Particle System on top of it (it is important to enable Use Modifier Stack in PS settings, otherwise effect won't work). Also tweak Start frame to match the frame, where Laser intersects mesh first time. In other words Start frame should compensate travel time of Laser or mesh will emit particles too early.
- Same purpose as in step "6". Add Laplacian Smooth modifier, it helps to smooth jagged geometry after Mask modifier did its job.
Open GL preview:

