I don’t know if it the intended purpose, but it’s a very useful one.
If so how are we supposed to send information from one script to another if one is not directly a child of the other?
Signals are good for that. It’s just generally easier to maintain than many calls to get_node. Signals help to decouple a scene from other scenes, so when you instantiate it you just connect the signals to some callbacks that can be in any script anywhere. If you use get_node all the time you end up having one scene relying on a specific node hierarchy in another scene, which is just a big headache.