It is likely that the circuitry required to add a VGA display to a PIC will exceed the cost and complexity of using a different chip which could provide a display and also do whatever the PIC was going to be doing, or else using something like a Raspberry Pi to provide the display and having it communicate with the PIC via a UART or something similar (I think the Raspberry PI has at least one UART among its I/O pins).
If your goal is to build yourself a VGA subsystem so you can learn how such things work, a VGA interface at 640x480 requires the ability to clock out about 32 million pixels/second. That's going to be a fair bit beyond the abilities of an "unassisted" PIC; you probably wouldn't have to add much hardware to a PIC to allow it to output text if you didn't mind having the display hogging up the processor during the majority of each frame, but the PIC likely wouldn't have time for anything else; each scan line would require that it execute a 160-instruction sequence something like:
movf POSTINC0,w,c
movwf PORTC,c
starting on just the right cycle, and running without interruption [hardware would blindly grab character data from PORTC at the moment it was supposed to be there, feed it through a character-shape ROM, and load it into a shift register].
If you did something like that, it might be possible for a 32MHz PIC to generate 80x25 text using something like a fast (25ns) 32Kx8 ROM to hold character shapes and serialize them, a 3-bit counter to clock out the pixels of each character, and a few miscellaneous gates; one could probably use one of the PIC's PWM modules to handle horizontal sync. This approach would provide an 80x25 matrix of tiles which could each be any of 256 shapes; each shape would be 8x16 pixels, and any combination of 256 colors [for simplicity, figure the colors would probably be RRRGGGBB or something like that]. If one had trouble finding a fast enough 32Kx8 ROM, one could use a fast 32Kx8 RAM instead, and provide a mechanism for feeding data into it on system startup.