I know of no comprehensive book or resource for this. There's been a number of GDC talks over the years on the benefits of Python, Lua, LISP, and other systems. Also, I have personally used a number of different systems, everything from embedding Lua myself (and using it heavily at Roblox,) to building examples in Unreal Blueprint.
The consensus seems to be that there are two levels of “scripting:" Simple “player pulls lever, it opens the door,” and full-on gameplay-development behavior. The needs for these are vastly different! If you want to develop your game using “scripting,” then you will need support for things like type checking, debugging, ahead-of-time compilation, and so on. And, ideally, multi-threading!
If all you do is wire signal outputs to inputs, with some small amount of value conversion or timing or if statements in between, you may not need that – but, maybe it's better to build an editor that generates those “scripts,” rather than using a full scripting language.
For what it's worth, embedding Lua is really easy, and getting going in that path is easy, assuming your engine is largely C/C++. A set of macros and templates will help you bind to the Lua stack machine just fine, and you may even be able to run a separate Lua VM instance per major game object, to allow for threading. The big table you define that contains all the game engine interface functions, should probably be shared between the environments, and immutable once started, though. Also, Roblox is currently doing a lot of work on adding performance and type inference/annotations to Lua, which is an interesting future, although whether all of that will be open source or not, I don't know.
Finally, if I were to build a scripting language today for a game, I would take a long, hard, look at embedding a WASM interpreter library. The good part about that, is that you get most of the “compiler / editor / debugger” support for free, and you can use real languages like Rust (or even C++) to generate the “scripts.” Yet, you can compile and load code at runtime, if you want, without having to re-load the entire engine. The main challenge for you there, is defining a well-performing interface between the game engine, and the scripting environment, but that's a challenge you will have using any solution.