Using a controller helps a lot, you get analog steering which makes it easier to make small adjustments (keyboard has you use maximal turning at all times)
I started learning code through a college class that taught Java and C++ basics, but everything from that point onwards has been self-taught.
All the art and music is custom and made by me! The art is mostly grids and solitary colors, which look interesting thanks to being mapped to polygons with 3D lighting.
Music is actually pretty easy once you get past the massive barrier of entry posed by the language, it's possible to approach it both mathematically and by pure feeling so there's more than one way to do it right. I recommend checking out "Shady Cicada" and "8-Bit Music Theory" on Youtube if you want to get a headstart. (Though like with anything else, it takes practice to be good and there's no shortcuts to greatness)
I tend to reuse a lot of code recursively between projects (which is a pretty good strategy overall, try to make your code into reusable libraries whenever possible!) so it's very hard to estimate the total workload that went into this... some things are so old I've forgotten when I made them.