What is In-circuit debugger and In system programmer
ISP (or ICP) means that it is possible to download a (new) application program to your microcontroller without removing it from its circuit. (Contrast this to the stone-age style of removing a chip from its socket, putting it in the programmer to be programmed, and then putting it back in the circuit to be tested, only to discover the next bug..)

ICD means that, while the chip is in the target circuit as described for ISP, you can set breakpoint(s), run the program, halt the program, examine and change variables, etc.

JTAG is a (hardware) communication mechansim beween a host and target system. IIRC it was originally designed for testing complex hardware. Many chips (most notably ARM chips) use it as (an) interafce to their ISP and/or ICD functions.