Groovy is just a variant of Java that allows scripting, if you know Java at all, you should be good. Still nothing hard if you have a programming background. You can even include Java libraries in your code. Of course, Hubitat does limit what libraries can be used in the sandbox, but the most commonly used libraries can be included at the top of of an App or Driver.
The developer pages are pretty good, I would start here with the platform overview.
Do you use Webcore now? That really teaches you a lot about the platform, the way it presents things to you as you select them. I used all Webcore for years, and I could make some very complex automations.
I first started writing simple drivers to store global variables, instead of using the Webcore global variables. Writing a data storage driver is a good first driver to write. I still use drivers as data stores, I can name all the state attributes like variable names. Commands in a driver are like Setters, and by using the currentValue("attribute") method, you can get the values from it into an app like a Getter.
A good first app is a simple connector app, that links two devices together. You will need to create inputs in settings to add devices, and you can then subscribe to events from the device to call a method, and you will get the event object that triggered it as parameter to the method, which you can then check for the value the event sent.
So I would look at the Hubitat Developer pages, simple data store devices, and simple connector apps. That was all I needed to get a basic idea of how things work.
The nice thing about starting from Webcore is that all your automation logic is already written into visible coding structures, to help you convert them into apps. I converted about two hundred Webcore pistons into custom apps using storage drivers as time went on.
The limit of Webcore for me was not being able to call methods, and trying to call a piston like it was a method by sending it values just isn't the same, as a Webcore a piston cannot return a value. So it is hard to reuse code in Webcore.
I wrote my automation apps based on areas in my house, instead of one big app. I have three main apps that control "areas" of my house, for all my lighting scenes and automations for those rooms.
Good luck! If you want a hand with something send me a message, I can share some of my code with you which you are welcome to use or learn from. I'm no coding genius for sure, but I can get it all to work. My methods may not be the best way to do things, but examples are always good.