BIOS=specific name given to the firmware which runs the low-level / system functions of a computer.
MONITOR = old name given to the firmware which presents the user of a microprocessor system with the user interface which can then be used to browse, alter and run code on the system, often including some sort of diagnostic tools such as single-step, which allows one instruction at a time to be executed and the contents of the RAM and Registers to be examined after each step.
I've described both of these as 'firmware', so what is firmware?
The original definition of 'firmware' is programme code which doesn't disappear from memory when the machine / power is switched off. This term really pre-dates the introduction of reliable in-system programme mass storage.
So typically, taking the Science of Cambridge MK14 as an example, the code which runs as soon as you turn it on and presents you with the user interface by which you can enter, browse and run code is its Monitor programme - because it is held in non-volatile PROM which can survive a power-down it is referred to as 'firmware', unlike the programmes which you enter into RAM yourself - these would be called 'Software' because they are lost from the machine's memory when it is turned off.
With the advent of mass non-volatile storage, ie, floppy discs and then hard discs, 'Software' became 'Code which is loaded into RAM from non-volatile storage and then runs in the RAM'. It still disappears from the RAM when you power the system off, but now it can easily be reloaded back into RAM from mass storage the next time the machine is powered up.
'Firmware' is still used to describe code which is normally held in non-volatile read-only memory, and includes the code which runs your washing machine, your car engine management system, your broadband router, your desktop and laptop computers, your tablet, your mobile phone and every other system which has an embedded microprocessor.
Firmware usually requires some RAM as well in order to be able to function, because it needs somewhere to store variables which change as the main code is running in the ROM. Most modern microcontrollers contain both ROM-like non-volatile memory for the program code and some RAM to use as a data / scratchpad area.
At one time it could definitely be stated that firmware always resided in Read-Only (ROM) memory which, once written, could not be changed (eg, Bipolar fusible-link PROMs as used on the MK14). This was still essentially the case when EPROMs came along: They were read-only to all intents and purposes since the only way to alter them was to remove them from the system, erase them and reprogramme them. More recently, this line has become less clear with the advent of EEPROM and flash memory: In-circuit reprogramming of the firmware is now more usually possible than not, using an external programmer such as another computer and / or specific programming tool. Some current microprocessors are also able to modify the contents of their own code memory, which means that it can no longer be described as ROM in the original sense.