I'm learning C# and I would like to start programming for Windows Phone, but I don't have an actual Windows Phone device. Is it possible to begin without a device? Is the emulator good enough to check functionality or is a device required?

Also, are there any differences between Windows Phone 7 and 8?