An error is a mistake in code, a bug is an error found before production, and a defect is an error found after production. Defects can arise from product specifications or customer expectations. Defects should be named, have their severity and type classified, and priorities assigned. Examples of different types of defects include user interface bugs, calculation bugs, and improper alignments. Components of a bug report include the title, severity, priority, type, steps to reproduce, actual/expected outputs, attachments, comments, and test environment details. Guidelines for writing effective bug reports include being precise, clear, and providing all necessary reproduction details.