I was wondering what options are open to me to do this? I know of NFS. Are >there any systems which can cache the files pulled over the connection, so if >the same file is requested twice, it is only pulled over the network once?
Well the only network filesystem that I know of that does the kind of caching you ask of is Coda which is still experimental, one of our developers was using it at home for a while until it decided to do something very strange and he had to get the backup tapes out!! I would stick with NFS for now as this is probably the best documented.
Do the machines both need IP addresses to do this (either private or real), or are there different way to address the boxes (using the ethernet mac address for example)?
Well technically no, you could use a different networking protocol (NetBios, IPX/SPX, etc.) but for the sake of keeping it simple you want to use TCP/IP as this while not the easiest networking protocol to get to grips with it is the most widely used. As for the MAC addresses that is part of the ethernet specification and will be used deep down by your network card driver, unless you are thinking of writing a new protocol you don't need to know about MAC addressing.
Just give the two boxen private IP addresses, as when you screw things up they should not get routed over the internet or allow people to connect to your fileshares, and I say use NFS as when you get stuck we can answer your questions.
Adam