Your understanding is basically correct.
The PICkit 2 and 3 GUI standalone software loads the CONFIG memory space from the hex file, so (unlike some third party programmers) you should *NEVER* need to manually set the CONFIG. You *can* override CONFIG bits once the hex file is loaded, before programming, but the interface to do so is particularly dumb so one should not even contemplate doing so if its possible to re-build from the source. If you do need to edit CONFIG bits in the hex file for an older PIC, its far easier under MPLAB 8 which has a CONFIG dialog with device specific named fields and descriptive options. You cannot directly edit CONFIG bits at all under MPLAB X, although there is a wizard to let you select CONFIG options and generate sourcecode for them.
The CLI utilities PK2CMD and PK3CMD *ONLY* load CONFIG bits from the hex file, as they don't have any editing capability.
CAUTION: The standalone PICkit 3 GUI utility loads PICkit 2 emulation firmware into the programmer. It will *NOT* be recognised by MPLAB (8 or X) until you either revert to MPLAB mode within the utility, or connect the programmer to USB, with no target connected, while holding down the programmer's button, which forces bootloader mode so MPLAB can correctly identify it and reinstall MPLAB compatible firmware.
There are a few other programming pitfalls, some of which are unique to 18 pin PICs, but you are most unlikely to encounter them if you are programming a blank PIC16F88. They mostly occur when attempting to reprogram a PIC in-circuit, with ill-considered prior firmware that conflicts with ICSP programming mode entry, and target power requirements greater than the few tens of mA the programmer can supply, so 'Vpp first' entry mode cannot be used.