For code legibility, I suggest this course, which I found very insightful (1). I think this is a good first approach that solves immediate legibility problems: what to these lines of code do? .
For "medium level" understanding, I would look into design patterns. These can frequently cause ugly code when you use too many, but expose you to nice principles about composition, interfaces, inversion of control, etc. This provides answers to: what is these files/modules/classes do? I read this book for university and it was decent: (2)
I would define high level understanding as architecture. A clean architecture provides an answer to "what does this project do?" . I don't have a good resource for you, but would research about architectures such as client-server, consumer-subscriber, REST APIs, pipelines.
These are a lot of topics and you should definitely take your time in each one. Bear in mind mind these" levels" are just something I came up with, but I think they make sense.
1: https://www.google.com/url?q=https://www.pluralsight.com/cou...