For small programs, the best place is current directory ,ie same directory as the c file.
But this can be customised using compiler switches.Complier can be "informed" t olook for header files in certain paths where we want/have stored header files.Compiler switches give us the flexibilty to provide a host of paths , where the header files can be placed.
On GCC, -I (uppercase i) switch can be supplied when compiling your program.
gcc abc.c -I /home/mint
MS Visual Studio also provides the same flexiblity , you can explore this... I am rusty with MS tools.