Niagara, Bullets, and object-pools

Some basic questions around using Niagara to manage bullet-pools.

I’m working on a tower-defense game where I will have a lot of projectiles of various types: beam-weapons, incendiaries, bullets, laser-pulses, etc. Probably several hundred of each type of munition might be possible given the typical upgrades like multi-fire, rapid-fire, etc.

I understand the concept of object-pooling and how one can manage bullets inside C/BPs but I had some questions around how/if Niagara could fit into the mix.

All the examples I’ve run into manage the getting, moving, colliding, etc of things inside code run in the CPU (C or BPs). Some use meshes, most seem to use a group/array of projectile-objects. Collision/damage and the rest seemed to be handled in the same way, and it’s not really anything that seems to leverage particle-systems.

I really don’t know a lot about niagara, but I wonder a few things. Some are just insofar as capability:
1 - generally, is it possible to use particle-systems to replace the mechanics of managing bullets in this way? Can the systems manage velocity, impact, etc of the bullets for me?
2 - can one ‘collide/physics’ particles in such a way to x-fer data somewhere else when it does so, or call an event? eg: when a bullet hits a critter, can the particle-collision be used to apply/call a damage event or otherwise update something-shared like and MPC (for example)?
3 - I’ve seen the documents on Data Channels. If Niagara cannot replace logic/mechanics of the bullets, I imagine that at the very-least Data Channels could be used to tightly-couple the management of the bullets with being (at the least) displayed in Niagara?

More unsure the general limitations of Niagara and what it might be able to do for me here.

Any direction/input would be much-appreciated, thank you.