<p>I have some experience making multiplayer <strong>turn-based</strong> games using sockets, but I've never attempted a realtime action game. What kind of extra issues would I have to deal with? Do I need to keep a history of player actions in case lagged players do something in the past? Do I really need to use UDP packets or will TCP suffice? What else?</p>

<p>I haven't really decided what to make, but for the purpose of this question you can consider a 10-player 2D game with X Y movement.</p>

There are a few factors involved in setting up multiplayer
The protocol, it's important that you decide whether you want TCP or UDP.  UDP has less overhead but isn't guaranteed delivery.  Conversely TCP is more trustworthy.  Each game will have their preferred protocol.  UDP for instance will work for a first person shooter but may not be suited for an RTS where information needs to be consistent
Firewall/Connection.  Making sure your multiplayer game doesn't have to make 2000 outbound connections and uses a standard port so portforwarding is easy.  Interfacing it with windows firewall will probably be an added bonus.
Bandwidth.  This is important, how much data are you intending to push through a network connection?  I guess this will come down to play testing and recording throughput.  If you're requiring upwards of 200kb/s for each client you may want to rethink a few things.
Server Load.  This is also important, how much processing is required by a server for a normal game?  Do you need some super 8 core server with 16gb of RAM to run it?  Are there ways of reducing it?
I guess there are heaps more, but really you want a game that is comfortable to play over the network and over a variety of connections.