In my experience with firing tf2 projectiles, there are 2-ish ways to do so.
The first would be by using an entity called tf_point_weapon_mimic. You can set the weapon type to fire along with a bunch of other values such as speed and direction. You have to send a fire output to the entity for the desired projectile to spawn.
The other way, which I use for certain situations is the old method of basically throwing a spawned projectile. In that case you'd have to create a new entity and name it tf_projectile_arrow. It will have no value fields so you'll have to add one, giving it the name targetname and the value of whatever name you'd like.
You'd then make a point_template, giving it a name and put in the name of the tf_projectile_arrow for Template 1. Then you make an env_entity_maker, giving it a name, speed, direction, and put the template name in the Point_Template To Spawn section.
Once you've got that set up you can output a forcespawn to the entity maker.
Now, the first way is much less complicated and newer, but the projectiles it spawns act less like projectiles. Meaning they can't be airblasted and may not do any damage. The ones done by the second method CAN be airblasted, but they'll act like rocket jumper projectiles. The rockets will do no damage unless you try airblast jumping with them.
In the end you'll probably have to use one of the two and just enable a trigger_hurt at the right moment or parent the trigger_hurt to the projectiles so that it moves with them.