With ICD you control the code execution of a microcontroller instaled in a circuit.You can run a line at once, or a code interval. With emulator you don't need a microcontroller in the circuit to do this, the emulador works like a polyvalent microcontroller connect in your circuit, then after development of code,
you can buy the apropriate microcontroller.
Yes, the Emulator can do the 'In-Circuit Debugging' since it has a specialized version of the MCU inside the Emulator. (it "emulate" the Micro controller you are using in your target system board) but not every Emulator can do the 'Real-Time Debugging'. there are limitations on how the In-circuit-emulator handle the real time events of external signal of the target MCU in your target system, (such as MCU speed, interrupt, I/O latency..) you might need to slow down the target system MCU execution speed to get the things work.
therefore when you purchase a In-circuit-emulator you need to find out if 1) it can do the 'In-Circuit Debugging' 2) if it can do the 'Real-Time Debugging' at the speed of your system. and 3) any limitations on real time events.
4) if the In-circuit-emulator can fully emulate your target MCU, (some In-circuit-emulator use higher end MCU inside the emulator to emulate the lower end MCU, ex: Atmega16 to emulate Atmega8
On the other end, since the PC speed is so fast now. it can simulate multiple MCU (full speed) in software, and it can handle the 'Real-Time Debugging' task too. (simulate the target MCU and external systems devices in real time). as long as the simulation model is correct enough, the whole systems is running in realtime events, with the ability (and headache) to program the I/O events. (the Proteus VSM is a example, but it can not do realtime now). event though it is " real time" in simulation clock, it can do the good job in the initial testing of your MCU software, design, ...etc.,
Some of the In-circuit-emulator us the hybrid approach, use PC running the software emulator (simulation) of target MCU and use FPGA to do the hardware interface to the external system, which is commonly used in IC chip or MCU chip development. again they might be able to do the "Real-Time Debugging" or might not, depend on what is your need.
Most of the modern MCU has build-in debugging now, they use JTAG, debug-wire,..etc., they are "In-circuit-debugging" build-in your target MCU, they will take away some I/O wires from your MCU for debugging interface to the PC. they could be able to do the Real-Time-debugging" too. they are much cheaper than the In-circuit-emulator