Gustafsson stammt aus Karlskoga und entwickelte sich beim örtlichen KB Karlskoga zum schwedischen Juniorennationalspieler. Er spielte Ende der 1970er für Färjestad BK in der ersten schwedischen Liga und wurde von den Washington Capitals beim NHL Amateur Draft 1978 in der vierten Runde als 55ster gezogen. Seine Karriere in Nordamerika begann er bei den damals in der WHA spielenden Edmonton Oilers. Als die Oilers in der darauf folgenden Saison in die NHL eintraten, machten die Capitals ihre Rechte an ihm geltend. Für diese spielte er dann neun Spielzeiten lang. 1989 wechselte er zurück in sein Heimatland Schweden, wo er weitere vier Jahre lang für Färjestad BK Karlstad aktiv war. Danach spielte er zum Abschluss seiner Karriere für fünf Jahre in Österreich bei VEU Feldkirch, wo ihm 1998 ein bemerkenswerter Erfolg gelang, als das Team als erstes aus dem deutschsprachigen Raum die European Hockey League – mit Spielern wie Reinhard Divis, Rick Nasheim, Simon Wheeldon, Dominic Lavoie und seinem langjährigen Kollegen Thomas Rundqvist unter dem Trainer Ralph Krueger und dem Co-Trainer Konrad Dorn – gewinnen konnte. Zudem wurde er mit Feldkirch fünfmal österreichischer Meister.[1]
Mit der schwedischen Nationalmannschaft spielte er bei den Olympischen Spielen 1992, fünf Weltmeisterschaften sowie zwei Austragungen des Canada Cups.[2] Er absolvierte insgesamt 117 Länderspiele, seine größten Erfolge als Nationalspieler waren die Weltmeistertitel 1987 und 1991, die WM-Silbermedaille 1981 sowie die Bronzemedaille 1979.
1997 wurde Gustafsson Assistent von Cheftrainer Ralph Krueger bei der Schweizer Nationalmannschaft, gehörte zum helvetischen Trainerstab bei fünf WM-Teilnahmen und hatte diesen Posten bis 2002 inne.[4]
Neben dieser Aufgabe betreute Gustafsson in der Saison 1998/99 den österreichischen Erstligisten VEU Feldkirch, wo er seine Spielerlaufbahn beendet hatte, als Cheftrainer.[5] Zur Saison 1999/2000 wechselte er zum Schweizer Erstligisten Schlittschuh-Club Langnau und fungierte dort zwei Jahre lang als Cheftrainer. Es folgten vier Jahre (2001 bis 2005) als Cheftrainer des schwedischen SHL-Vereins Färjestad BK, für den er ebenfalls einst gespielt hatte. Er führte Färjestad zum schwedischen Meistertitel in der Saison 2001/02.
Im Oktober 2010 erhielt er eine Anstellung bei den ZSC Lions und unterschrieb dort einen Vertrag bis zum Saisonende, welcher im März 2011 nach dem Ausscheiden der ZSC Lions im Viertelfinale der Playoffs gegen die Kloten Flyers nicht mehr verlängert wurde.[6] Anschließend war er bis November 2011 Trainer von Atlant Mytischtschi. Vom 9. Dezember 2012 bis zum 21. März 2013 war er Trainer der Nürnberg Ice Tigers[7] in der Deutschen Eishockey Liga (DEL), anschließend betreute er von 2013 bis 2015 die SCL Tigers. Mit dem SCL schaffte er den Aufstieg aus der National League B in die erstklassige National League A. Eine Vertragsverlängerung kam dann aber nicht zustande.[8]
Am 24. Januar 2017 übernahm er als Nachfolger des entlassenen Maurizio Mansi das Cheftraineramt beim EHC Olten aus der National League B.[9][10] Anfang Februar 2018 musste er in Olten gehen, zuvor hatte es seit Mitte Dezember 2017 in 15 Partien nur fünf Siege gegeben, die Mannschaft stand zum Zeitpunkt der Trennung auf dem vierten Platz der NLB.[11]
↑The Team Sweden Head Coach. swehockey.se, archiviert vom Original (nicht mehr online verfügbar) am 15. März 2016; abgerufen am 15. März 2016 (englisch).