Take for example subtract.h

You include subtract.h in subtract.c, so that the compiler can check that the prototype in the .h file is consistent with the definition in the .c file.
If you edited one without changing the other, you stand a chance of getting an error message.

Everywhere you want to call subtract would need to include the subtract.h header file, so that the compiler knows how to call it.

If a source file doesn't need to call subtract, then there is no need for it to include the subtract.h file.