Most applications generate print command outputs as postscript and, according to OpenPrinting, the HP 3020 is postscript capable:
http://www.openprinting.org/printer/HP/HP-LaserJet_3020
With a postscript capable printer, your print job can be sent directly to the printer.
postscript ----debian cups spooler ---> postscript capable printer
HP was able to produce cheaper printers using PCL (Printer Command Language) and in order for those printers to work, the postscript job has to be "filter'd":
postscript ---debian cups filter ----> pcl ---debian cups spooler---> pcl capable printer
The spooler part queues the print job and sends to the printer when the printer is ready.
There are other filters and according to the OpenPrinting page I linked, the hplip driver, for your printer, uses a "raster converter" filter.
These are set by the ppd, usually by a code line in the ppd that talks about a raster converter:
https://www.cups.org/doc/raster-driver.html
Where you can get in trouble is if your Windows machine "filters" the print job, sends it over the network, to your linux cups printer which is expecting postscript.
Windows postscript ---windows filter---> pcl ------> network ----
//--> debian cups expecting postscript but gets pcl.
If you have raw output from Windows:
Windows postscript ---no filter (aka "raw") ---> postscript ------> network ------> debian cups gets postscript and should print.