even headers are optional, but they become extremely useful once you start writing code that's large and complex enough to warrant splitting over multiple files.
Even on a short code, you should learn to include your own header files. Life changing, really. It took me a long time to figure out what I was missing, and I am still probably using them incorrectly and will make some mistakes in terminology. And I still use 8, not X, so maybe some things are different:
For instance, the #include <P16F1628.inc> will include the default register definitions in MPLAB for that device. That's a header file.
Your own header files could be
Error/warning messages. When you want to turn on/off error messages, click on your_error_reporting.inc file to open up your list of error codes to suppress. Just #include your_error_reporting.inc in your source code.
your EEPROM initilization
your Variables definitions
your Pin definitions
you could include any macros... if you use them
You can break up your source code, even, and #include it on the main page.
Scrolling through a page of code can become unmanageable. You can make code-bookmarks. Right clicking on the page, you can jump to lines/labels, but when this list, itself, is several pages long, it's still a pain. And in 8 you can sorta kinda open a split window to look at two parts of once source file at the same time, but it's kinda broken IMO, so breaking your code (even if temporarily) can be very helpful. And taking all the major "non-code" stuff that you will want to frequently reference while writing code and putting it into header files allow you to always see it in a list of files in your main project window. Now you can click it to open it in a new window to read/modify/reference side by side with the window where you are writing new code. Play around with header files (and compiler/ide directives, too!), because it's a powerful tool.