The top most node of your scene is called the root node in the Godot documentation. I think this should be assumed, unless otherwise stated, because there is no way to click on the real root node or attach a script via the editor (though you could do it with code possibly and break your game).

On top of acting like nodes, scenes have the following attributes:
They always have one root node, like the "Character" in our example.

https://docs.godotengine.org/en/stable/getting_started/step_by_step/nodes_and_scenes.html

Ok, so let's see if I got this correctly (and I will try to be as clear as I can.
Imagine I have this hierarchy:

And I have a script attached to the Universe node, another attached to the planet_texture node and another to the planet_mesh node.
The script attached to the planet_texture node, calculates the bitmap that will be required by the script attached to the planet_mesh node, to create the mesh. This means that the script that generates the bitmap needs to run first and only after it is finished, the script that creates the mesh can be executed.
So, inside the script attached to the Universe node (my Scene Root), I code this:

func _ready():
	get_node("planet_stuff/planet_texture").emit_signal("create_heightmap")
	yield(get_node("planet_stuff/planet_texture"),"heightmap_done")
	get_node("planet_stuff/planet_mesh").emit_signal("create_planet")

Inside the script attached to the planet_texture node, I code:

signal create_heightmap
signal heightmap_done

func _init():
	connect("create_heightmap",self,"calculate_all")

func: calculate_all:
	# do bitmap stuff 
	emit_signal("heightmap_done")

And, in the scrip attached to the planet_mesh node, I code:

signal create_planet

func _init():
	connect("create_planet",self,"calculate_mesh")

Is this the correct way of doing it?
Because I still get warnings telling me that the signal 'create_planet" is declared and never emitted, that the function 'connect()' returns a value, but this value is never used, and errors telling me that I'm attempting to call function 'get_texture' in base 'null instance' on a null instance.

Sorry, I mixed things up. This:

signal create_planet

Should be in the file that emits that signal. Though it will work either way, that is the correct method.

I don't get the connect warning on my test app Godot 3.4.4, put you can do this to make it go away:

var _val = connect("create_planet",self,"calculate_mesh")

The get_texture() error is just standard node search or initialization problem. Most likely the node reference is wrong, like if you did get_node("a_typo") and that will be null. Or if the name is correct, but it is not a child on that node, etc.

The error about the null instance is in a specific line of code, inside the script that creates te mesh. I tried using relative referencing, with:

var vpimg = get_node("../planet_texture").get_texture().get_data()

and even absolute referencing, with:

var vpimg = get_node("planet_stuff/planet_texture").get_texture().get_data()

And I still get the same error, whenever I save the file.
Also, I get this error:

Signal 'create_planet' is already connected to given method 'calculate_mesh' in that object

What could it be, since I only have one line code that connects the signal to the method?

I did read that tutorial. And, according to my hierarchy, the script attached to the planet_mesh should point to the planet_texture node by going up one level, and pointing the planet_texture, as the planet_texture node is a sibling of the planet_mesh node.

I did not connect the signal with the editor. Maybe that is the problem. I will check if out.

What node is the script attached to? Also, are you properly deleting the node when you're done?

I have a script attached to the Universe node, that sends a signal to the planet_texture node and waits for a signal from the planet_texture script,, telling that it finished working. Then, it sends a signal to the planet_mesh node.
I have scripts in the planet_texture node to create a bitmap and in the planet_mesh node to create the geometry.

As of now, I'm not creating any instances. So, I only have the nodes that I need and I will not be creating more, so I don't need to delete anything.

Signals are confusing. Instead of defining your own and connecting them for this case, the built-in "completed" signal should work.

# Universe
func _ready():
    yield($"planet_stuff/planet_texture".calculate_all(), "completed")
    $"planet_stuff/planet_mesh".calculate_mesh()

You may have to add yield(get_tree(), "idle_frame") to the end of calculate_all() to get it to work. I'm not certain if that's needed to correctly receive the "completed" signal, but here's a functioning mockup:

extends Node

func _ready():
	yield(calculate_all(), "completed")
	calculate_mesh()


func calculate_all():
	print("Heightmap calculated.")
	yield(get_tree(), "idle_frame")


func calculate_mesh():
	print("Mesh created.")

I'm still getting the "Attempt to call 'get_texture' in base 'null instance' on a null instance" error.
If I'm accessing the texture of a viewport node that is a sibling of the planet_mesh node, where the script resides, the path should be "../planet_texture", since the ".." goes up one level, pointing to the parent node of both the planet_texture node and the planet_mesh node (where the script resides), and then points to the child planet_texture, right?
I mean, with this hierarchy...

planet_stuff
--planet_texture
--planet_mesh

if I have a script attached to planet_mesh, to get a texture image from the planet_texture node (it is a Viewport node), I should use...

var vpimg = get_node("../planet_texture").get_texture().get_data()

Right?

If you are calling those get_nodes() on ready, then no, they are not guaranteed to be valid. The ready of each child is called, and then the parent, and then all the way up the chain. So if all the code is on planet_stuff, it will work, since you are guaranteed that both planet_texture and planet_mesh and initialized. But you cannot be guaranteed that calls between planet_texture and planet_mesh are synchronized properly because one will always be ready first, meaning communication will never work (doesn't matter which one first, since one will be valid and another invalid). So the code should be on the parent node, which is planet_stuff. Note that the texture and mesh can still have functions, but they should be called by the parent, not by themselves.

    cybereality

    Thank you very much. I will change the structure of my nodes and scripts. Unfortunately, I have to work today and I will only be able to try it later, tonight.