typedef int (*SIG_TYP)(int);
typedef void (SIG_ARG_TYP)(int);
SIG_TYP signal1(int, SIG_ARG_TYP){};
как вторую конструкцию понять? это указатель?
Нет, этот тип -- это тип функции (а не указателя на функцию).
Т.е. можно написать так:
SIG_ARG_TYP foo;
и это будет объявлением функции foo.