There are three types of pipeline hazards that can occur: resource hazards, data hazards, and control hazards. Resource hazards happen when two instructions need the same resource. Data hazards occur when there is a conflict in accessing an operand location. Control hazards take place when the pipeline makes the wrong branch prediction. The document then provides more details on each type of hazard, including the three types of data hazards: read after write, write after read, and write after write.