Seeing the whole Picture: What exactly is Arduino, how does it fit in?

(deleted)

There is no shortcut to learning what you are asking, it will take years. Realize you are learning several new languages. Probably the best way is to go to college and get your degree in electronics, programming, etc. There are hundreds of thousands of links that will explain this in every way conceivable and not all are correct. I would suggest getting the Arduino Cookbook and going through that and trying a lot of what is shown. Then there are a lot of "Dummies" books that do a good job of explaining.This should get started but does not answer your question there is not enough space here to do that.

Let me just start by dropping all the words that form the chaos in my head:

Your descriptions are mosyly pretty good, but your layering picture is off...

Network-Stack: Providing a (Berkeley socket like) interface to access the network/internet. Is this part of the HAL?

This one is probably the furthest off.
You might have seen that networking is frequently described as being based on "the OSI 7-layer model."
Those layers, each one dependent on lower layers, make up a "stack", just like a stack of pancakes. A software network stack provides programmer access to each of the layers (as appropriate), as well as access to the other layers of the stack.
Here's a pretty good picture:


the stack doesn't need to implement Berkley "Sockets", but that is a popular interface.
A networking stack is NOT part of the HAL; it MIGHT operate on top of a hardware abstraction for an ethernet interface, though.
A networking stack is vaguely different than many libraries because it tends to interact with many different levels of the "operating system"; drivers on the bottom, internal access for routing and address translation and stuff, and applications way at the top.
More later.

Usually on a microcontroller you don't even have an OS - the binary you build is all that runs (except for the bootloader, if present, which runs and then exits before the code you wrote starts)

"Driver" is rarely relevant - generally refers to something on a desktop computer that knows how to interact with hardware, eg, the bit of software that knows when you plug in a CH340G serial adapter, that it's a serial adapter and how to talk to it to make it be such a thing. Occasionally you see people refer to libraries to interact with specific hardware embedded devices as a "driver", but this is not really correct terminology. Unless you're making your own USB devices that need their own driver to do whatever it is, your involvement with "drivers" will start and end with you installing the drivers for whatever USB interface your development board has.