everything you said is pretty much spot on.
By error check, i guess you are referring to compiling and debugging, cause in that case, it has has to be done as soon as you write down the program, i.e. just before feeding the program to the chip.
and yes, it is no assumption, but the software definitely needs to know the PIC in use; otherwise you can imagine all kinda wierd things happening ;like the program not loading properly oor IC burning down.