Nothing is beyond you.
Some people find coding hard, some people find it easy. The people who find it hard are those on a deadline or in a hurry those that find it easy invest the time needed to guarantee a good understanding and quality produced code. Both are extremes, coders as somewhere in between.
The code cannot be rushed, it wont respect how smart you are , it wont respect how practical you , it wont respect how beginner you are or whether “you are too old for this shit” or “don’t have time for this shit”. The code demands respect it never gives it.
I know that may sound quite poetic because for most people coding may sound so incredible smart or complex or hard. Its neither of those things, it just takes time, thats all. A lot of time. A ton of time. It is a science afterall and , some will argue , an art.
So my advise, forget what you dont know or how much you dont know, pick what you want to learn and go learn it, the only thing you need to do is invest the time.
So let’s get to the practical stuff. Python started as a scripting language for C/C++ coders. Its what made Python so popular, it offered a very easy way to port C/C++ libraries to it. Around 50% of Python itself is written in C, you wont find py modules for those things too either.
When you import a module you dont necessarily import a module. In case of Blender because Python is basically inside the executable, so are many of the libraries it uses. BGL for example to a great extend , though appears as a Blender Python module it is actually C code using PyObject. PyObject is part of the Python C API a collection of C functions that allow for python to talk to c and vice versa. PyObject maps C functions to python methods , functions and other objects. Yes a python function is basically a python object but thats another story.
Obviously after you learn the basics of Python you will need to take a deep dive inside the Blender Python API DOCS
https://docs.blender.org/api/2.78b/
First section with the 7 links are absolutely mandatory to read. The rest is reference documentation you may use as you see fit depending on what you try to learn.
In coding not understanding is perfectly fine, you learn things depending on your needs, so each coder follows his own path on this.
Don’t generally learn stuff, its a waste of time, you will forget it afterwards. Pick a project , learn what you need for your next 10 lines of code , write them, then go to the next 10 lines etc.
Help() wont be much help , pun very much intended, because it basically prints docstrings (basically regular strings using triple double quotes) that are the basis that form the API documentation so you basically getting the same things minus the extra stuff that come with the API docs.
dir() is different because it allow you to examine the structure of your objects which helps a lot because coding is a lot more about being an investigator than being an engineer.
Good ,bad , mediocre tutorials. Does not matters, as I said, time is the key. Invest the time , the knowledge will come. There are no red or blue pills.
Learning C is also inevitable because its really helpful at times to look at C code when API DOC dont contain the info you want, internet does not offer any clues and asking in this forums get you no answers. Learning C is about learning very few things about it, just enough to figure out some technical stuff about the python objects used by blender.
“Head bumping desktops” is another way to name coding. Thats exactly what it is, it has nothing to do with you being a beginner. There is a comic I once read , two coders discuss one saying. “There is one unit that can accurately measure the quality of your code, the lesser it is the higher quality your code is”. The other asks of course what that is and the first coder replies “WTFs/s” , so the second asks again “whats that ?” , the first one replies “WTFs per second”. Get used to cryptic messages , lack of documentation and tons of werid and stupid code. All part of coding.
I am coding for fun since 1988 , almost 30 years, took me one entire day yesterday to figure out how to load textures to the blender viewport directly via BGL (OpenGL). It came down to one word.
Not command.
Not method.
Not object.
Just one word.
BGL_FLOAT.
Still no clue why it works like that and not the way I assumed it will, but I cannot say I care much other than it works and now I can move to the next as you so elegantly put it “head bumping on desktop”.
But it always great fun to figure things out yourself and a huge confidence boost. So take the dive to the deep black waters of coding and just swim.
Oh and keep asking questions. Its always crucial to ask questions and many times you will find this curious things that happens with the brain when you ask a question it helps you find the answer by yourself. There also plenty of people willing to help out, helping each other is essential to survive the madness of coding.