Download the Windows and Mac drivers for the printer (in this case a HP LaserJet 1300) that you're going to be using. Make sure you get the right language, otherwise they'll probably install in the wrong place on OS 9.
Install the drivers on a Mac running OS 10.3, then hook the printer up to the USB port. In the Sharing pane of System Preferences, switch on 'Share My Printers'. This makes the printer available in the 'Shared Printers' section of Printer Setup Utility for anyone else running OS 10.3 on the same subnet.
Then switch on Windows Sharing, and the printer should show up on computers running Windows XP when they use 'Add Printer' (in the Printers section of the Control Panel) and browse for a printer on the local network. The problem with this is that they seem to have to log in to the Mac with a valid username and password to be able to print, so printing breaks when the Mac is restarted.
Instead, use Add/Remove Programs in the Control Panel of Windows XP to Add/Remove Windows Components, and install the Network File and Print Services (probably need the XP CD for this). This means when you go to Add Printer, you can choose to 'add a printer connected to this computer' and create a new LPR port. Add the IP address of the Mac with the shared printer, and use Get Info in Printer Setup Utility on the Mac to find the name of the print queue to use. Use 'Have Disk' to find the official drivers, then finish setting up the printer.
LPR printing works from Macs running OS 9 as well: use the Desktop Printer Utility to add a new printer, select the right PPD, and enter the IP address and queue name. Then select the icon on the desktop and press Apple-L to make it the default. You can also add an LPR printer using the IP Printing section of Printer Setup Utility on OS X.
This doesn't work in Windows 98, because it doesn't have the UNIX printing services capability so can't create an LPR port. HP make a program to create a TCP/IP port, but it doesn't work very well, so instead you have to share the printer you just set up on a Windows XP machine and print via this from Windows 98 (it should show up when browsing the network for a printer to add).
Even with the official drivers on OS 10.3 and Windows XP though, printing a large PDF with big figures from Windows causes trouble somewhere on the Mac or the printer - the print queue stops and no-one can print. Deleting the job from the print queue window doesn't work - it reappears when you restart the queue. The only way to get rid of it is by using Printer Setup Repair to clear all the temporary spool files and reset the Printer Setup Utility. Then you have to re-add the printer and get everyone to send their print jobs again.
Instead of printing via LPR, you can print via CUPS on port 631. On the OS 10.3 Mac hosting the printer you enable the root user in NetInfo and set up CUPS. Then open http://127.0.0.1:631 in a browser - it'll ask for the root username and password. Add the printer in the CUPS control page (select the USB device, and call it laserjet for example), restart cupsd, and it should show up in your shared printers.
Now you can go back to the Windows XP computers, and instead of creating a new local printer on an LPR port, create a network printer. Use the address http://ipaddress:631/printers/laserjet (or whatever you named the printer), select a generic Apple PostScript driver and the printer will be added. (Perhaps if I'd used the generic PostScript driver on Windows XP with the LPR method, instead of the official driver, it might have worked better - I'm not sure).
Other OS 10.3 computers on the same subnet will use Rendezvous to see the CUPS printer under 'Shared Printers' in Printer Setup. In 10.1.5 you need to use IP printing: just add the IP address of the host printer and tick the box to use the default queue.
This seems to be working so far, though the printer on OS 9 keeps unsetting itself as the default for some reason. Have to wait and see how long it lasts.