What's your educational background?
All of what you said depends on a lot of concepts. Self hosting implies you need to understand basic networking, running servers, basic security, etc. Plus a lot more depending on the nature of the application you want to host. A simple website would only require a web server running on some machine, but more complex applications might require many more dependencies such as databases, caches, etc.
Perhaps first draw out a plan for what exactly you want to do and then think about what you'll need to learn to achieve that.
Programming is a good place to start in general. You could start from either Python or JavaScript and then move on from there.
Size limitations? In git?
What is the average size of your source code files?
Normally you'd never run out of space in git unless you're committing large binary files.