It is said that
When an interrupt is sent by the PIC, the PIC will not send another
interrupt from that same source until it gets acknowledged through an
I/O port. This is because interrupt handlers usually manipulate
critical data structures and would not withstand being interrupted by
new invocations of themselves (i.e. they are not reentrant).
I don’t understand. Is there something different between interrupts of the same source and different source?
You can get interrupts from different sources: timer, hard disk, network, etc. Each one of those interrupts will be handled by a different interrupt handler.
Therefore, if an interrupt from source (S1) arrives while another interrupt from source (S2) is being processed, there is no problem. Both interrupts are being handled by different interrupt handlers.
On the other hand, if an interrupt from source (S) arrives while the handler for that source is processing another interrupt, the handler will not be able to process the second one since it is not designed in a reentrant way (i.e., it cannot be interrupted, process the new interrupt, and then go back to process the original interrupt).
You may have a look at Understanding the Linux Kernel for detailed information on the way interrupts work in the Linux kernel.