From my research (personal & unpaid), looking at the common way these terms are used in programming literature & “in the wild”, I have found that these definitions seem to fit their usages.
Execution refers to the process of running code. Exact method does not matter, can be compiled or not, done by a computer or not.
Applying/Application refers to the binding of arguments to the function. Application can be both partial and complete. From functional programming world, partial application produces another function with less parameters while complete application produces a thunk. Thunks are functions with no parameters and can help with “lazy evaluation”.
Invoking/Invocation refers to the process required to schedule the function, with its fully bound arguments, for execution. Such systems include pushing arguments onto the stack and transferring the PC to the new address, placing messages/objects/functions/thunks on a queue for later execution or various other RPC systems. Exact mechanism does not matter. The notion of scheduling for future execution matters. Invoking requires that the will function execute.
Calling is the least defined out of the lot. Generally refers to the combined process of fully applying the function then invoking it, usually with the added semantic that your code will wait for a return value.
Please also note that all of these terms are subjective from the point view of the current code that is being written. Invoking a function via a RPC call is only invoking it from the client’s side. From the server’s side the request has a different invocation point, if the function even has any “meaning” as a function on the server’s side.