pointer to a function that returns int and does not accept arguments
This is not so - the function takes a pointer as its argument, but since there is no type specifier, the base type of the pointer is considered int . This is an ancient (pre-standard) behavior, some compilers allow this, others do not.
I thought that only void means no arguments. It really means the same as:
int (*) (void)
No, this is not due to the reason described above.
Also, can I proceed from the assumption that abstract declarations such as this exist only for customization of types?
No, they can also be used in function argument lists in function declarations. In this way,
int factorial(int);
excellent so
void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
user529758
source share