"work" is the default library. Most designs use "work" to refer to your code. Third party code might be compiled into other libraries, like ieee or xilinx or altera or synopsys or etc... This means you can have a work.fifo and a vendor.fifo in the same file.
"work" is a special library. most designs compile all user code into "work" in order to avoid confusion with the nuances of the "work" library, or because there is a lack of understanding of how libraries work in VHDL.