An extensive article detailing the illegal opcodes present in the original MOS 6502 has been posted over at pagetable.com. Check it out here.
Note: this article is rather old (2008) (age being a relative thing on the interwebs), and as the author states, much has been written to document the opcodes already. The difference here is this:
I am not aware of any article that tries to explain where exactly they come from. I’ll do this here.
Pagetable.com is an excellent resource for learning assembly language, or brushing up your skills if you’re already an expert.