My advice, while it may sound initially unhelpful, is really to just start doing it. Find something you can do with the skills you have now, and work your way up from there.
For me, and I think it's the same for most people, it's much easier to motivate myself through learning something if I have a tangible end goal that I want to achieve. For years I was scared of even writing C++ let alone dabbling in anything machine code related. But one day I was writing a program in Java and I realized it needed to run a
lot faster. While it was intimidating at first, I starting rewriting it in C++, and just figuring out whatever I needed to do to get that done as I went. It took over a year of working on that project, but eventually I felt pretty confident about C++.
By then, I too was getting really fascinated about the idea of reverse engineering and modding something (mostly from reading
slowbeef's Policenauts Let's Play). I had no idea where to start, until a friend mentioned how cumbersome LEGO Island's turn speed was on modern computers. I knew enough about programming to know that the turn speed was
probably just a number somewhere, and if I found it, I could change it. So I did whatever I could to try and find that number.
A lot of it was just trial and error that went nowhere - I tried using virtual machine save states to track for changes in memory, I tried just watching a debugger blow through instructions to see if I could recognize anything, I tried blindly searching the binary for anything that might be relevant, none of which went anywhere. But eventually I discovered a tool called Cheat Engine, which can search through and modify memory. From there, I could find the turn speed value, which then showed me where that value was in the executable, which instructions read from and modified it, etc.
After figuring out how to do all of that, I then had the knowledge to tackle bigger challenges (including eventually a more sophisticated turn speed fix that completely unhooked it from the frame rate). But I could only get there by tackling smaller, more approachable tasks first.
Self-learning is definitely an acquired skill. I think the trick is finding things that you might be 80-90% sure of how to do. That way you'll at least have somewhere to start from, from which you can push through and figure out the remaining 10-20%. That's almost always what I'm doing in my videos, while it may seem from the presentation that I had it all figured out from the beginning, I'm usually learning something new with every project. That's what makes me so excited to do them.
I'd recommend at least familiarizing yourself with C/C++ simply because 99% of compiled machine code you run into will be sourced from it. While you can certainly read/write assembly without knowing C/C++, knowing it and all of its "standard practices" will help you figure out what the programmers were trying to do that resulted in the machine code you see. From there, like I said, find something you think you
might be able to do, and figure out how to do it. Also Ghidra is an incredibly powerful (and completely free!) reverse engineering tool. Your US tax dollars at work!
Best of luck, hope that helps!