It depends on the ammount of trust you want to give your game's clients, usually the game logic is mostly server-side to avoid hacked clients, and if that is what you wish, the server would simply update the state of the entities and send that updated state to every client (the state being, for example, the position). This way, the only thing the client does, if you have a controllable hero for example, is to ask the server to move the hero, and the server will move it or not, depending on the game logic and if moving the hero is possible (there might be a wall infront which would block the hero's path).
You can also do the logic client-side and send the results to the server so the server updates the rest of the clients about your state, but that would create the chance for hacked clients to send altered states which shouldnt be possible with the default client.
If you opt for the first option, in your case, yes, the server should tell the clients where to spawn the entities and then send regular updates so the clients know which is their most recent state, to draw them accurately.
As for particle effects, thats something that should be fully client-side. Every aspect of rendering is usually done client-side, and particle effects is just a matter of knowing where should it spawn to make it happen, it doesnt matter if its not exactly the same in every client, the results are similar and unless particle effects actually affect your gameplay, you dont have to worry so much about it.