You can think of header files as interfaces to modules which you use to import functionality into your own code...
It typically contain function declarations which are used to operate on some structure that represent a concept...
It may also contain platform configuration details and system-wide values...
One useful way to use header files is to emulate OOP abstraction as follows:
This file will be used by you which you include in your application to work with a person object
This file will be distributed as a binary object file for linking into your application... Its details are unknown to you
This is your application file which uses the interface file for working with person objects in your application...
As you can see, details of how stuff work to use a person in your application is just a matter of including the header file (interface) and using its published services...