1.Header files declare function prototypes not the function itself. They contain declarations of functions that are defined (along with their body) in other C programs.
Please make note of the difference between declaration and definition.
2. You can always run a C program without a header file if there are no function calls made in your program that need that header file.
Header files contain function declarations , so if no function is used you do not need the header file.
If no printf is used , you do not need to include stdio.h in your program.