When should we mark a user story as completed in a burn down? Do we do this when the development is completed or when it goes through QA?
The team commits to creating a 'potential shippable increment' at the end of a sprint. So, the story should be ready to ship in all respects.
If a task fails in QA, should we add it as a new user story or update
the task hours?
The team gets no credit for stories that are not complete in all respects by the end of the sprint. Add a new user story in the backlog, estimate it and let the Product Owner prioritize it.
If the team asks extra hours to fix the bugs due to some complexity,
how can I update the total time remaining?
Hours remaining to complete tasks can be estimated at any time for internal tracking purposes regardless of what the original estimate was and how many hours have been already spent.
Looks like your team will benefit from some Scrum training followed by an internal team discussion of "Definition of done".