Note: You can read about Godot 3's renderer in this article.
This is not as important as most people think, since modern GPUs can handle a lot of triangles (hundreds of thousands at least). Don't underspec your assets – it is far better to slightly overspec them (making them too detailed) than to underspec them (making them not detailed enough). The same goes for textures, by the way.
Godot does this out of the box, of course. :)
- Keep light number small (in forward rendering)
This is still true in Godot 3.0, but clustered optimizations may be added to 3.1, which will let you use more real-time lights than with traditional forward rendering. (It will still be forward rendering, so you'll still be able to use MSAA.)
- Use texture compression where possible
Godot 3.0 supports S3TC (for desktop platforms) and ETC2 (for mobile/web platforms). ASTC is not supported, as it is too new and barely supported anywhere outside of NVIDIA graphics cards.
Static GI (baked)(Unity, Unreal). I didn't catch how Godot does GI but I tend to think it does it dynamically only. For static GI, I'm thinking the user could perhaps use baked GI textures as albedos?
Godot 3.0 uses a semi-real-time GI that is very-good looking, adapts to moving lights and emissive materials, and is fairly fast (but still slow, in comparison to not using any GI). Godot 3.1 will probably add a lightmapper for mobile devices and low-end desktops.
- Reuse materials (for reducing draw calls)
- Reuse shaders (for reducing shader switches)
Both of these can be done in Godot, by making several nodes share the same material and shader resources.