It's all up to you.
Do you want to hack something quick together, or do you want to put in some effort to be able to read your own code 5 years into the future?
Do you want to re-use some "library" files such as for example the functions to use an encoder or serial port for other projects?
I find it much easier to give each .c file it's own .h file.
It avoids the fud of what is where.
If you use a decent IDE it is trivial anyway.
It just generates a .c and .h file from a template, which already has the include guards in the header file.
While browsing your project it also does not matter if you add 20 header files to the 20 source code files. If you follow convention and common sense you put the source in the source file and the miscellaneous info in the header files.
If you want to obfuscate, you put some the source in .h files, other source in .bin files, put the stuff that normally goes into a header file on lines between functions in a source code file where it does not belong and write a makefile to stich it all together.
Or you use the arduino way. Write a script to dump everything into a single file before you pass it to the compiler.