I didn't quite get the underscore vs no underscore functions, I don't quite get also the need to put -> void: after some functions, maybe I've missed the explanation, or maybe there is some general rule that should be obvious for me that I'm not aware of? Will be grateful to point me in the right direction for understanding. Thank you.
Here are the answers to your questions.
The leading underscore in a function's name means one of two things:
The second point also apply to variable names.
This return type hint helps to prevent errors when writing code. Godot should warn you if:
More importantly, the return type also shows in auto-completion, through the language server in auto-generated documentation, so when coding, you know you're working with a function that doesn't return anything.