If both computers already have 10/100 cards in them, all you will need is a cat 5 cable. My personal preference would be to put the modem into the linux box and to connect to dialup with it and then share to the MS one, but you can do it either way. Be prepared for it to take a little while to set up, as there are always snags.
You can put the printer on either box and just share it.
The specifics will depend upon which version of MS you have and which linux distribution. Setting up the linux computer will involve things like samba (to share files) and cups (to share printer) dhcp and dns (to provide the internet connection to windows). On the windows side, set up the computer to use dhcp and then add the remote printer from the linux box and open up any shares you want to provide to your linux computer. You can add samba shares as well, and 'map network drive' so they show up in explorer like an additional hard drive.
There is a lot of little things to watch for (like firewalls, using the same workgroup, server ip address), but you can get it started and then repost here if you have any problems. Depending upon your distribution, the setup can range from a very intuitive GUI process to editing text files.