C18 is the old Microchip compiler, and XC8 is the new Microchip compiler that they bought from HiTech (or some name like that, anyway, the Aussie compiler).
XC8 has the current support and is what Microchip is going forwards with. If you are starting from scratch with PICs, then this is probably what you want.
However, there are some issues to be aware of either way. XC8 doesn't implement a software stack. It also does its own linking using a incompatible binary format to that of C18 and MPASM. If you plan to mix C and assembler, and particularly if you have existing MPASM modules, or expect to get any from others, then stay away from XC8.
On the flip side, C18 has its issues too. While the code generator seems to be robust, some of its strategies of how to use the PIC 18 hardware are "less than brilliant". It implements a software stack, but chose a layout that requires the one pre/post inc/dec addressing mode that the PIC 18 doesn't have. Duh! It also reserves two of the three FSR registers for its own use. It also uses a caller-clean stack model for subroutine calls. That means subroutines can't remove data from the stack they're done with before calling other subroutines. The result is that the stack needs considerably more space than it should.
Personally, I stick to MPASM on the 8 bit PICs. I have used C18 in the past for some mixed C/ASM projects, but that was only because I received code that way. It was always more trouble when the compiler was involved, compared to a pure MPASM project. I've also got many subsystems written in MPASM already on the disk, so mostly I just have to add the logic specific to the project. Things like UART handlers, USB device, TCP/IP stack, and many other facilities are already there.