In order to understand the nomenclature, you have to compare it to the extreme ends end of the spectrum:
- RAM (Random Access Memory) allows you to randomly read and write individual units (usually bytes or words, or some internal organizational unit), and it doesn't really matter whether you are reading or writing.
- ROM (Read-Only Memory) allows you to only read. The contents of a ROM are put there as part of the manufacturing process. (This is also called Mask ROM.)
In-between, we have then a continuum of other stuff:
- PROM (Programmable ROM) can only be written once, using a special device called a programmer. However, unlike a ROM, it can be generically manufactured and then programmed after manufacture.
- WORM (Write-Once Read-Many) can be written once, but the difference to a ROM is that the programming doesn't use special equipment. It can be done using the same equipment that is used for reading. (Think of a CD-R writer.)
- EPROM (Erasable PROM) can be erased using UV light in a special eraser, then be programmed again in the programmer.
- EEPROM (Electrically-Erasable PROM) is an EPROM that doesn't require UV light to erase, it can be erased electrically. Also, it can be erased per-byte (or sometimes per-word or per-block), i.e. at the same granularity as it can be programmed and read.
- Flash-EEPROM is an EEPROM that can only be erased in (much larger) erase blocks. So, the main difference to an EEPROM is that the granularity at which Flash-EEPROM can be erased is both much larger than an EEPROM can be erased and also much larger than the granularity at which the Flash-EEPROM can be programmed and/or read. What this means is that if you want to change one byte in an EEPROM, you can erase and program just that one byte. In a Flash-EEPROM, you have to first read the entire erase block, then erase the block, and then program the erase block again with the original data except that one byte changed. This makes writing to Flash-EEPROM much more complex than writing to EEPROM.
So, why use Flash-EEPROM at all? Well, it uses fewer transistors per bit, which makes it smaller, denser, and cheaper than EEPROM.
how come a USB works exactly like an HDD when I read and write things?
It doesn't. It works completely different. There is a sophisticated firmware running on the Flash storage device which makes it look like a SCSI / SATA / USB / Firewire storage device. (They all use basically the same command API.) The quality of this firmware is in fact one of the major distinguishing (performance) factors between SSDs. For example, an SSD will typically contain more Flash-EEPROM memory than the controller firmware exposes externally, and it is part of the cleverness of the controller firmware to decide whether to erase and re-write a block or to mark the block unused and re-map the block ID to a block from the pre-erased spare portion that it "keeps up its sleeve".
Furthermore, especially SSDs employ large RAM caches that are used to (among other things) "collect" multiple writes to the same erase block together so that the block only has to be erased and re-written once in one go.
Note also that NVMe was developed specifically because Non-Volatile Memory (the vast majority of which is Flash-EEPROM-based) does not behave like the currently existing dominant storage solutions for which the existing protocols were designed.