The extent to which abstractions leak depends on the type of stuff you're programming. When I worked on router operating systems I had to understand lots about the innards of how things work all the time, now that I do web stuff mostly in PHP, I don't find abstractions leaking very often, though maybe I don't always notice it when they do.
So I don't think you can learn all that sort of stuff totally top-down. But I think there's useful stuff you can do without having to know all of that. I think evening when you're learning things bottom-up sometimes you need the occasional glimpse of higher layers where things are leading so you can see the big picture too, and maybe as motivation. Maybe you don't need to learn it all totally linearly bottom-up, but at some point you do need to make sure you understand the nuts and bolts if you want to write certain sorts of software.
So I don't think you can learn all that sort of stuff totally top-down. But I think there's useful stuff you can do without having to know all of that. I think evening when you're learning things bottom-up sometimes you need the occasional glimpse of higher layers where things are leading so you can see the big picture too, and maybe as motivation. Maybe you don't need to learn it all totally linearly bottom-up, but at some point you do need to make sure you understand the nuts and bolts if you want to write certain sorts of software.