In general there are two types of printers:
GDI printers will need a fast USB connection to work at a decent speed, probably USB 3 at a minimum to handle a high resolution bitstream, while those that accept a character stream should be adequately fast with USB 1 or USB 2 connections.
The Linux/UNIX print management system is CUPS which uses printer-specific drivers to handle translation between the character stream output by the program you're using and the modified character or bitstream the printer understands.
If there's a CUPS driver for your printer, then configure it and be happy. If there isn't, but your printer is a member of a printer family that accepts a character stream containing escape sequences, then your choices are wider.
The printers I know that form families are Epson printers that accept 'Esc/P' control sequences and HP Laserjet printers, which understand HPLJ control sequences. In both cases each newer printer tends to add more control codes but apart from this, they are backward compatible with earlier models. This opens your possibilities: if you configure CUPS to use an earlier model within these families when CUPS doesn't have a driver for the printer you have, the printer will still work perfectly, but can't handle the 'latest printer twiddles': if you don't use these, then you've lost nothing. If you REALLY,REALLY need the latest twiddle then, because CUPS is open source, you can volunteer to create a new printer driver for it or raise a bug asking for the new printer to be supported.
For instance, both the Epson LQ-500 (120 col 24 pin monochrome dot-matrix printer from the late 80s) and the Epson Stylus inkjet colour printer will work perfectly well if you tell CUPS it is an Epson MX-80 (80 col 9-pin monochrome dot matrix printer from the late '70s) but of course you'll only see a reduced set of fonts and sizes in black and white if you do this. But - it may well get the job done for you.
I've also used the same trick with HP Laserjet printers: an LJ5 works perfectly well if its connected to a print driver intended for an LJ2.
How do I know this? Bcause I've been there and done it many times. I'm a satisfied owner of an Epson LQ-500 and a HP LJ5: LQ-500 for printing labels and the LJ5 for everything else. Oh yes, I also had an Epson Stypus 850c until it used up its internal head cleaning ribbon and clogged itself solid.