“Think of a header file as a specification of an API, that can be implemented across any number of source files.”
Turn on every warning, treat warnings as errors, and run sanitizers in debug builds. Learn your linker and your platform, because C won’t hide them from you. Arrays decay to pointers and undefined behavior hides until a new compiler finds it. Fifty years in, the best advice for C is still a list of traps.