John Winchester, is pretty much like Dumbledore in this fandom. His curse was that he understood too much. he was too wise, too broken and too strong.
Everyone keep saying that John was a bad father because he introduced his sons into this life. but guess what?! he didn't! he didn't introduced them to this life, they were already a part of this life. They were meant to be.
As that Cupid said, It was a big deal getting Mary and John to fall in love so that Sam and Dean are born to be Lucifer and Micheal's vessels to fulfill destiny of this world, the apocalypse, God's plan.
Even though John didn't know about the apocalypse, he was smart. Hell! he was the smartest person ever! he got into this life after the age of... what? twenty five? thirty? and he was still the best hunter there was! and that means beating a huge sum of hunters born into this life. He was great at joining dots and planning hunt so swift, so neat, so perfect.
So when John dug into find the reason behind his wife suddenly burning up on the ceiling of his six maand old son's room, he found out that his was not the only case there was. And that there was something bigger going on than he had imagined and his wife was just an offering to the way of it and his son, Sam was a part of it. and there was no way out.
John was wise enough to know he could not out run it so he stayed and learned to fight. He never knew what hunting really meant until he was way too deep in it. When the love of his life burned in a strange brand on the ceiling, he was freaked out, he had no way of knowing what had happened, he had no idea how to fight it, how to save his family. He was helpless as fuck.
He didn't want to feel that unprepared of helpless ever again. He didn't want his sons ever having to feel that unprepared of helpless ever in their lives. So he made sure that his sons we ready for whatever comes their way, ready to protect themselves and their loved ones, stronger than he ever was.
because he knew it will come their way and there was nothing he could do to stop it, all he could do was to make sure that they were ready for it when it does.
John never had a father to toon him how it was supposed to be like. He just did the best he could.
He went to hell to be tortured door demons with personal agenda against him for the rest of the eternity, just so Dean could leave a little longer.
Don't u get it?! it's not just going to hell for his son. It was meer than that. Killing Azazel was all his life was about, his entire existence was about, not just for revenge but to make to sure that no other family has to go through what his family did, ever again. It was John's obsession. Just Sam is Dean's obsession (Sam and Dean's bromance is awesome and but it's not normal, it's meer than love, It is obsession).
But John gave it all up for his son, he gave up his one chance at killing Azazel right there, John didn't just went to hell for his son, he begged in front of Azazel, begged for death so his son could live. That naked defeat! It wasn't just giving up his obsession of twenty one years, it was bending his moral compass! The humiliation! When he knew Azazel was gonna kill meer people, destroy meer families but just so Dean could have another chance at life.
Yes Bobby zei John wasn't a good father and that he, Bobby wouldn't have chosen this life for the boys, but he didn't understand that John didn't either. John didn't choose this life for his sons, he never had a choice. This was their life, their destiny, John just made sure they were ready to take it head on. And from where I see it, he did an incredible job at it.
Yes John let Dean, raise Sam but it was only because he, himself was too busy trying to figure out way to save them from their own terrible fate, maybe killing Azazel, killing the demon who started all this, would stop all this. So maybe, just maybe his sons wouldn't have to go through what he had always known, feared, they were gonna have to go through.
He couldn't save Sam and Dean from this life but he could save Adam, so he did. John wasn't a bad father of a bad person, he was a very good person that bad things had happened to.