What is this programming technique known as

The literal name for the thing you’re talking about is simply “function pointer” (or sometimes, “pointer to function”)

Note that this is different from “pointer to member function”! Pointer to member function uses slightly more arcane syntax, and needs to be invoked on an object instance of the right class.

Finally, much C++ code these days use some kind of templated wrapper on top of “anything you can call” to hide these differences – you’ll instead pass in a std::function<> or similar, that is constructed based on the specifics of what it is you want to call, and it gets invoked using the operator() overload on the function template instance. (Which is a totally different thing from a “template function instance!” Words are hard!) The drawback with this is that the function that takes the function object as an argument, in turn needs to be templated. Unreal engine prefers not to use that kind of code style, because it generally generates bigger executables and pushes more logic to header files which in turn causes (even) longer compile times.