Haku took the shot meant for Zabuza. Zabuza was the wicked one but he still covered for him. Why did he do it?
The story line goes into depth about it.
Haku, as a child, ended up killing his own father by accident (couldn't control his own powers under extreme emotional distress). He was all alone and Zabuza took him in - the understanding was always that Haku was a "tool" to be used by Zabuza.
This was his goal in life then - to be of use to Zabuza. For that aim, he went through any number of things distasteful to himself (such as assassinations), worked on his skills to become the most powerful ninja he could possibly be, to become the best tool for Zabuza to use.
When beaten by Naruto, he felt that he was now a useless tool and had no more reason to live. He asked Naruto to kill him - to finish him off, which Naruto was not capable of.
When Zabuza was about to get the death strike from Kakashi, Haku did the only thing he thought he, as a useless tool, could do for Zabuza and sacrificed his own life to save Zabuza.