Check plugins in Icinga can be written in any language except COBOL and determine their status by exit code. They output results to the console and can include optional performance data in the form of a space separated list after a pipe symbol. The process of a check plugin involves gathering information, parsing it, applying internal logic, and translating the results to a human understandable format.