What is the difference between Flash memory and EEPROM?
The first ROM devices had to have information placed in them via some mechanical, photolithographic, or other means (before integrated circuits, it was common to use a grid where diodes could be selectively installed or omitted).  The first major improvement was a "fuse-PROM"--a chip containing a grid of fused diodes, and row-drive transistors that were sufficiently strong that selecting a row and forcing the state of the output one could blow the fuses on any diodes one didn't want.  Although such chips were electrically writable, most of the devices in which they would be used did not have the powerful drive circuitry necessary to write to them.  Instead, they would be written using a device called a "programmer", and then installed in the equipment that needed to be able to read them.

The next improvement was an implanted-charge memory device, which allowed charges to be electrically implanted but not removed.  If such devices were packaged in UV-transparent packages (EPROM), they could be erased with about 5-30 minutes' exposure to ultraviolet light.  This made it possible to reuse devices whose contents were found not to be of value (e.g. buggy or unfinished versions of software).  Putting the same chips in an opaque package allowed them to be sold more inexpensively for end-user applications where it was unlikely anyone would want to erase and reuse them (OTPROM).  A succeeding improvement made it possible to erase the devices electrically without the UV light (early EEPROM).

Early EEPROM devices could only be erased en masse, and programming required conditions very different from those associated with normal operation; consequently, as with PROM/EPROM devices, they were generally used in circuitry which could read but not write them.  Later improvements to EEPROM made it possible to erase smaller regions, if not individual bytes, and also allowed them to be written by the same circuitry that used them.  Nonetheless, the name did not change.

When a technology called "Flash ROM" came on the scene, it was pretty normal for EEPROM devices to allow individual bytes to be erased and rewritten within an application circuit.  Flash ROM was in some sense a step back functionally since erasure could only take place in large chunks.  Nonetheless, restricting erasure to large chunks made it possible to store information much more compactly than had been possible with EEPROM.  Further, many flash devices have faster write cycles but slower erase cycles than would be typical of EEPROM devices (many EEPROM devices would take 1-10ms to write a byte, and 5-50ms to erase; flash devices would generally require less than 100us to write, but some required hundreds of milliseconds to erase).

I don't know that there's a clear dividing line between flash and EEPROM, since some devices that called themselves "flash" could be erased on a per-byte basis.  Nonetheless, today's trend seems to be to use the term "EEPROM" for devices with per-byte erase capabilities and "flash" for devices which only support large-block erasure.