Technically, they both do the same: do something in an environment that acts as if it were the real thing.
Conceptually, however, there is an important difference.
A simulationsimulation is supposed to be detached from the real world to a certain degree; the output of a simulation is not directly connected to the thing it simulates. For example, an aircraft simulator does not actually fly, and the pilot is not actually communicating with a real air traffic controller.
A simulation usually has the goal of testing or predicting some real-life process in a safe environment; because the simulation is disconnected from the real world, nothing really bad can happen (a crashed aircraft simulator never kills real people).
An emulationemulation, by contrast, has the goal of taking the place of the real thing: for example, if you emulate a simple microcontroller using a more sophisticated programmable CPU, that CPU can be used in place of the original microcontroller; it will be physically connected to some machine, and it will actually control that machine just like the microcontroller would.
A simulation usually has the goal of testing or predicting some real-life process in a safe environment; because the simulation is disconnected from the real world, nothing really bad can happen (a crashed aircraft simulator never kills real people). The goalgoal of an emulation, OTOH, is to replace hardware or software components with functional equivalents when the original modules aren't available (or have become too expensive, if only to maintain); emulation. Emulation can also serve the goal of using hardware more flexibly - the same programmable microcontroller can double for several simpler controllers, switching emulation mode as needed.