Making a 2D platformer is basically broken down to 2 major components: your player movement script (aka your platforming), and the scene manager (aka, your platforms). The player script is easy to make, literally just mapping movement to input, most of your work here will be tampering with the public variables in the Unity editor to fine tune the mechanics. Extra movement features like grappling hooks or double jumps is basically just discovering the appropriate script and adding it to the player script, then tampering with public variables again.
Scene manager will either load premade levels, or you'll have to learn how to perform procedural generation. Which is much easier than it sounds, they have a tutorial that explains how to implement simple procedural generation for a turn-based top down that you can easily rewrite for a platformer. Most of your work here is either building the levels, or tampering with the procedural generation so that all levels it generates are beatable.
Always finish player script first before the scene builder in a platformer. You're asking for trouble to invert the order, since you'll inevitably need to revisit the scene builder again to make sure the movement is compatible with the levels if you do go in the opposite order. Much easier to define the movement, then troubleshoot the scene builder as you build.
There are no tricks to scripting or coding. You only learn by doing it. You only get better by staring blankly at your screen at the same goddamn error for hours until you fix it. All of programming is how much time are you willing to spend tearing your hair out in frustration, because any program worth its while will result in you spending the same amount of time testing, if not more, to the time you spend coding. Bugs and error messages are your day to day life.