I wouldn’t see it as learning an x-amount of skills! The thing is, the more you practise the better you get, but also the more elaborate and complex the projects tend to get that you want to tackle. In general, I think that whoever came up with the “10 000 hours to mastery” philosophy really got it.
I don’t believe that you can ever reach a point, where you’ll be like “now I’ve learned enough”. Usually in life, I guess that’s the attitude of people who’ve already given up on the thing they were pursuing (or on life itself). That said, with growing skills there comes a certain degree of comfort.
Learning programming really tends to be even a little bit harder than Grasshopper, since there are many more mind-blowing concepts to discover and it’s far more abstract.
I think many people find Grasshopper difficult, because it really requires you to have a broad understanding of many things. It has certain elements from programming that you need to understand, like scope, data structures (lists, trees, etc.), conditionals, or even iterations (looping through lists/trees), and then there is the whole geometry sphere (points, vectors, lines, etc.) that is closely linked to trigonometry and maths.
My advice would be to start with small projects and build from there. Try to understand the small components and what you can achieve with those. If you truly get what points and vectors are and how to manipulate them, you can already do lots of things. Even a line is “just” two points, a polyline a collection of points, a mesh a collection of points (vertices) and a collection of numbers (faces), a surface can be build from points, etc.
There’s lots of YouTube and Vimeo content about Grasshopper. I’d focus on the videos that actually explain how things work. The ones that only show how to connect components together to quickly get a fancy result, don’t have much value, at least for beginners. You really have to understand what the components do themselves and how they interact with each other. Understanding enables you to come up with concise and quick solutions yourself.
Now, when it comes to programming, I’d start learning the basics of the language in question first and then come back to Rhino/Grasshopper and dive into their respective APIs.
If you go down that route, it is imperative to sooner or later wrap your head around object-oriented programming (OOP), because data structures, like functions, classes, class methods (even structures, namespaces), etc. are big parts of how the APIs are organised.
There are lots of great sources online to learn Python or even C#.
It is not necessary to learn how to program as a Grasshopper user though! You can do great stuff with just components, but I guess the further you develop your GH skills the more certain limitations of the program start to stand in the way of your creativity, and some can be circumvented with your own scripts.