Only IY is used by the OS, and SP is used pretty much everywhere (you need to preserve SP to use call, ret, push, and pop)
IY is actually the start of the OS flags, so you can use it by disabling interrupts then restoring it when done.
IX can be used by programs, and along with IY is an index register. They're called that because when using them indirectly, you can add a constant index (8-bit signed) to them, like "res 3,(ix+9)", which resets the third bit of the byte nine after IX.
The disadvantage to using them is that they are larger and slower. The instruction above is 4 bytes, while "res 3,(hl)", the equivalent version with hl instead of ix+9, is only 2.