Häfner played children's and youth football for his hometown club BSG Motor Sonneberg. As a junior player he was assigned to FC Rot-Weiss Erfurt before joining Dynamo Dresden in 1971. He stayed with the Dresden club until his retirement as a player in 1988 having played in 366 East German first division DDR-Oberliga matches, scoring 49 goals. He is second to Hans-Jürgen Dörner in matches played for Dynamo. Häfner was part of four DDR championship and FDGB Pokal (East German Cup) winning teams there.
In April 1990, two years after his retirement as a player, Häfner became head coach of Dynamo Dresden, replacing Eduard Geyer. Weeks later Dynamo claimed its eighth championship and seventh cup. The following season, despite the sale of star players Ulf Kirsten and Matthias Sammer, Häfner guided the Dresden team to a second place finish in the final DDR-Oberliga season before the merger of the football competitions of East and West Germany following the reunification of the country, qualifying the club for the first division Bundesliga. Despite this success he was dismissed in June 1991. He moved on to coach second division club Chemnitzer FC from 1993 to 1996.
Häfner joined SV Grün-Weiß Langeneichstädt (Kreisliga Merseburg/Querfurt, Sachsen-Anhalt) in the post-season of 2006-07.