To point 3), it's not that difficult. Even in this space, you don't necessarily have to reinvent the wheel: there are quite a few embeddable languages to choose from. Lua, microPython, GNU Guile, Janet, and plenty of others. It is fairly trivial to implement one of these, and it is up to the one implementing what capabilities should be exposed to the scripting language. It's not hard to do this in a safe way, i.e. to only allow the scripting language to control game logic, and not allow it to talk to the operating system.