Not sure about the numbers, they seem rather weird and seem to denote the registers rather than values in the registers..
But the whole point of forwardin is this: The ADD $3,$4,$8 presumably wants to store the result into $3. The instruction behind it, the ADD $2,$2,$3 wants to use the reult of that operation, but without forwarding it would have to wait two cycles for the result of the first add to get written into the register during the writeback stage.
With forwarding, you can put this result straight into the ALU, thus eleminating the pipeline stall.