You've discovered the correct syntax already when defining the pointer array:
void ledOnOff(int(*pwmCallPtr )(int));
// just omitting the array ^^
// declaration
A typedef can make the whole stuff easier:
typedef int(Callback)(int);
void ledOnOff(Callback* cb);
Note that there's an alternative variant:
typedef int(*Callback)(int);
// ^
allowing to declare void ledOnOff(Callback cb); – I personally prefer the former variant, though, for not hiding the pointer nature of variables or parameters.
Side note: Your original variant
void ledOnOff(pwmCallPointer*);
failed to compile because pwmCallPointer does not name a type, but a global variable. The type of the function pointer is int(*)(int), and int(*ptr)(int) declares a variable or parameter just as char* ptr would, solely the syntax is more complicated. You could even name it pwmCallPointer – just as the global array. Be aware, though, that you then have two distinct variables (the global one and the local parameter) which just share the same name, and within the function the global variable is hidden by the local one. Doing so, of course, is not recommendable.