Using cdecl.org, you get
declare signal as function (int, pointer to function (int) returning void) returning pointer to function (int) returning void
for the input
void (*signal(int, void(*)(int)))(int)
This means signal is a function. The result of of calling signal is pointer to a function void f(int).
Explanation: The signal() call installs a new signal handler and returns the old signal handler (so you can restore it later if you want to).