I personaly try to use singals for events, like player died.
Things that you would otherwies have to check in a _process(delta) function.
Which would make the overall game a lot slower and harder to read.
I would suggest to you, to try to use signals for most of the communication in the direction children → parent/s or whenever something changes the overall gamestate. That way you decouple your components. Basicly avoid calling get_parent or $"..". see: https://forum.godotengine.org/31109/how-to-get-the-parent-node-with-a-instance-scene