To correct a few things.
IRQ 0 through 15 are hardware interrupts, from the Interrupt controllers on the system board. There are also hardware interrupts like the NMI and hardware interrupts that can be generated by the processor, and software interrupts generated by programs.
Each hardware device uses an IRQ REQUEST line to the PIC to request service from the processor. For example, the keyboard/mouse controller on the system board generates one or more interrupts when a key is pressed and one or more when it is released. The disk drives generate one when a data transfer is complete.
The system timer generates an interrupt 18.2 times per second and is used to keep the clock updated and allow task swapping by the OS. There is also a programmable timer that Windows uses to schedule tasks and provide services that uses it own IRQ.
Under DOS, the IRQ's have a priority, 0 being the highest, then 1,8,9,10,11,12,14,15,3,4,5,6,7 (2 is used to cascade 8-15 in). This allows a higher priority interrupt to interrupt a lower one when it is being serviced. The older hardware designs and DOS did not allow much sharing of interrupts, so each device had to have its own IRQ assigned.
Under Windows, a rotating priority scheme is used and managed by Windows, so that one interrupt does not interrupt another one that is already being serviced. PnP hardware and Windows OS device drivers allow some IRQ's to be shared by different devices so there can be a lot more interrupting devices running under Windows. But IRQ priority has no real meaning under Windows, only the sequence that the pending interrupts are processed around the chain.