I like the idea of generalizing the FX system (like your previous suggestion of having callbacks for curves) however I think there's a piece missing to this proposal.
For example, having a type "position" doesn't only mean to call orxObject_SetPosition(), it also means that the original value is retrieved with orxObject_GetPosition(), that the neutral element is (0, 0, 0) and that the combine operation is add.
We'd need to specify all those information for the FX system in order to work. At this point, maybe a more in-depth redesigned should be considered so as to not feel too clunky.