I'm in the same boat as you, got into homebrew with the PSP scene in 2004 and although I've done a fair bit of programming over the years, I never really advanced and got any better.
This year, I decided I'd really have a stab at it and I've improved quite a bit but my main goal is still in the distance: write an emulator. I think Christmas is a bit optimistic but I've been understanding what an emulator is doing(in terms of the language you choose to write it in) in the abstract a LOT more in the last 6 months or so.
I think I'm nearly there, actually. Understanding enough for it to just be a matter of putting the hours in, I mean.
If you'd take advice from someone in the same position as yourself, I have plenty to offer that's helped me get to the point where I don't feel lost anymore so feel free to give me a message(I know I'm hardly an expert).
Here's what helped me:
1. Learn about CPU architecture/hardware in general and how it works. Emulation is finding the right way to emulate the bits and bytes, switches etc that are running inside the hardware. What really helped me understand(even though it took me 2 months to complete the first week of this course, don't laugh) was Nand2Tetris. I didn't get a lot of schooling and this course felt beyond me and I haven't finished it but I learned more in the first 2 'weeks' of that course than I did in the past 15 years attempting to be a programmer and make video games, on and off.
2. Pick a language and stick with it. Just do it until you're good. I wasted over a decade thinking it was the language that I didn't understand and that I'd just picked a bad one to start out with. I was wrong. Learn the concepts. A good place to dip your toe in is codecademy or something similar to that in that you don't need to worry about IDE's, compilers etc as it all runs in the browser and you can just focus on core concepts.
3. Think of as many ways to word the question you're asking as possible and type it into youtube. I'm still finding tutorials and videos on making emulators that I thought didn't exist because they're so obscure and have so little views, simply because I worded the question different.