I challenge you on #1/#2 since there was Personal C (PCC) around the mid/late 80s. The version I had didn't have a graphics library though, so I learnt 8086 assembler and CGA/EGA calls (memory is hazy here, but probably CGA) and made my own :)
I was lucky enough to be leant a good C book by a family friend (whoops... Still have it almost 30 years later!!).
But I agree with your overall point that it was much harder to self teach back then. On the flip side however is that now there is so much choice that getting started can be a challenge as there are so many routes to choose!
I was on the Amiga at that point and even if there was a free compiler it was never on the shareware disk it was supposed to be on and there was usually a bit missing. I got a copy of Turbo-C (with a book, maybe?) and programmed (on a PC) at work after hours.
I, too, learnt assembly mostly because there were a few good free assemblers available.
I was lucky enough to be leant a good C book by a family friend (whoops... Still have it almost 30 years later!!).
But I agree with your overall point that it was much harder to self teach back then. On the flip side however is that now there is so much choice that getting started can be a challenge as there are so many routes to choose!