To make an emulator you will need to know network programming and also a data set of a client network packets, you will need to respond to the client requests with the proper packet.
To get a client dataset you will need a sniffer, to sniff the packets from the client when it makes an request to the server or receives an response from the server.
Depending on the case sniffers can be attached to the client or to the network interface(wireshark or pcap attaches itself to the network interface and sniffs all ingoing and outgoing trafic, detours of). Another method is to inject the sniffer into the clients send and recv.
Also network packets are encrypted so you would need to find the encryption and decryption methods, usually they are not too far from the send and recv, and in some cases they are only xor encrypted, but if you do not understand the encryption method, you can also attach sniffer before encryption and after decryption. When developing the client and the encryption is to hard to understand you can also deactivate it.
Doing reverse engineering to the client some clients have anti hack or anti reverse engineering modules attached to them, that will detect if the client was compromised or not, or if you are software. Also the client can be packed and to reverse engeneer on it you have to unpack it into the memory and dump it and fix import tables and original entry point, or make a patcher to patch certain points into memory after the client is unpacked.
When making the client to connect to your server, so you have to either redirect the connection or you have change it from client.
If the client passed their end of life and there is no compatible server online you have to reverse engeneer the packet from the client by looking how the packet is parsed in the client.
Once you have the list of packets you will need to classify them, and implement on your server.
As to where to start would be simple MUD games, building sniffers to build your packet datasets, and changing the client connection, to connect to your server.
A good book for creating a simple server is:
You must be registered to see links
And the source from that book:
You must be registered to see links
Other posts:
http://forum.ragezone.com/f860/creating-emulator-1155746/
http://forum.ragezone.com/f144/mere-curiosity-1049695/
http://forum.ragezone.com/f144/emulator-mmorpg-1021182/