This is the approach I recommend to people when the end goal is learning. In an ideal world, you could rewrite everything from scratch and learn how your entire system works, but the world is often too complex for that to be practical.
It also helps if you pick projects which don't require you to add loads of dependencies to get started. For example, when writing a HTTP server it's practically mandatory to pull in some sort of framework for HTTP and libraries for database access. You can't be expected to write things like HTTP request parsing and routing and a custom Postgres driver from scratch unless you are already an expert in those areas, so it becomes more of an exercise in correctly composing things in a way the framework expects.
On the other hand, something like a compiler has a lot of depth (many books and courses are dedicated to the topic), but it's quite realistic to write the entire thing using just the standard library.
It's not harder to write a tiny HTTP server than to write a tiny language. Just maybe less fun.
As for the question that topicstarter is asking about...
Here is job description of Software Engineer. Here is job positions of Application Engineer. Same company, yet different roles: first guy is supposed to, mostly, write new code from scratch while second guy is supposed to know certain frameworks well and would, mostly, connect components together to produce working result.
In smaller company these position wouldn't be distinct but these are, most definitely, different skills.
Usually you need both, but some jobs would be closer to one end of spectrum and some close to the other end.