There is a difference between #include <io.h> and #include "io.h". I hope I am remembering the syntax correctly. One is for basically the compiler utilities and the other is for yours. You should be able to put your includes in your source directory or with a relative path in a sub-directory.
The reason for not using absolute paths is just what you said, although I have worked at a place for a short time that wanted absolute paths, but it causes problems. That is one of the cool things about working as a contractor. I got to see people do a lot of unique things. In this case, I discovered a bug where to copies of the same file were being used, one in one place, the other in another. You haven't got into showing structures, but the big difference was the structures were slightly difference, which was something the compiler didn't catch because it compiled using the other header file.
By the way, that is another thing to remember. Always include your header file in the source file for the method. For instance display.h should be included in display.c. This way the compiler will verify that the function prototype in the header matches the function definition in the source file.
I don't want to get into to much of this because you intend this for beginners. Keeping things simple is a priority. Learning coding standards and the difference between what you can and what you should do are for future threads. As I say, C will let you do whatever you want, whether you want to or not.