I have poor skills on programming, and honestly, I don't like doing this. But I admit that it gives a pleasant feeling of accomplishment when you get something to work.
I tested the Nim bindings, but from what I understood, all GDNative bindings have common files:
-The "godot headers", the Godot API in C code.
Since the pure C is still the king of all languages, most languages can talk with a C library with reliability. That's made possible to script Godot with many different languages.
-The languages bindings. Godot headers are generally found in the same repository.
-The "natives scripts", created with two mouse clicks in the Godot editor.
-The "GDNativelibrary" resource, created easily in Godot too.
-A compilation script. You will run this file to compile your scripts. But you must respect the directory organization recommended (for example all your cpp script must stay in a "src" named folder).
If you want to place your Cpp files elsewhere you need to understand this script in order to update the filepaths. (that's the annoying thing for me.) Edit: This script is provided by the binding.
-The library you will create by compiling your C++ scripts. It's a single binary file per platform.
-And of course your native scripts source code in cpp or whatever. The class must have the same name as the one specified in the native script. That's why Godot can found your code.
Depending of the languages bindings, some additionnal stuff may be required but this should be documented in the readme.
I tried to show that chain in a quick diagram. Sorry if the naming is not very accurate. (English isn't my native language).
Binaries are in blue and text files are in green.

When you run your project, your compiled scripts (the library) are dynamically linked to Godot, and no GDScript is required. (but you can use GDScript to call your library if you want).
I don't know about you or other folks but my satisfaction doesn't come from just seeing my game finished already. It comes from the technique of making it. Imagine you go on a trip in a country by car. Now imagine instead you'd take the train. See my point?
I understand that. Games engines hides all the technical stuff to accelerate the creation process. But if you love to code you will be frustrated, even GDNative follow the path defined by the engine.
You can solve this by trying a little project without any game engines. The SFML C++ library might interest you. Or if you feel adventurous you can even try more low level libraries like Open GL, PortAudio, and dealing directly with the OS. With that you will become a master of game programming.
I apologize if I wrote bad english.