Projectiles are difficult to code with the MP plugin because of the delay in creating and destroying objects.
The workaround I've used is to sync an INVISIBLE authoritative projectile via the host, and have create a visible sprite on the peer side for local input prediction. When the invisible host projectile gets synced, the local visible projectile will smoothly correct its position. On the host side, the "true" projectile will spawn a little farther forward with lag compensation, and peers can do similarly with reverse lag compensation
This works best for slow moving projectiles. The difference in speed/angles upon spawning and catching up to the authoritative marker should be difficult to notice if done well.
Basically, this is a recreation of the lag compensation and local input prediction systems for movement already baked into the MP plugin, except for the purpose of creating and destroying objects.
For faster moving projectiles, this may not be ideal and it may just be best to show peers delayed, synced objects. This issue is not unique to the multiplayer plugin and is more an issue with netcode in general - you'll have to deal with the lag somehow in the end.
If you don't care about an authoritative host, then you can just ignore the sync functionality all together, and have each peers update each other with messages. It will work as you described - the host will receive a message from the peer, and can relay a message to all peers with the contents and maybe a tag to identify which peer it comes from. This doesn't solve the lag issues though, which you'll still need to account for.