How does this do what it does (C++ classes, use of colon)

The point is that there are all kinds of inconsistencies when dealing with C-style arrays.
Inconsistencies that you are used to, maybe, but nonetheless inconsistencies that add nothing to the language and that can easily be avoided by just using std::array.

What modern language has arrays that implicitly decay to pointers, that cannot be initialized by other arrays, or that cannot be returned by functions?

I'm not talking about free variables:

How would you implement this in a general way using C-style arrays?

std::array is a standard-layout type, you can use it for that purpose as well.

I can understand that, especially in the scenarios where you work close to the hardware. But in this case, the problem is initialization of a member variable, which cannot be done directly using C-style arrays, so using std::array is the obvious solution, and is consistent with the initialization of other types of member variables.

understanding

Luckily, understanding std::array is very easy, there's no magic involved. From cppreference:

This container is an aggregate type with the same semantics as a struct holding a C-style array T[N] as its only non-static data member.

In other words, std::array<int, 5> is just struct { int _data[5]; };.

If they're useful in high-level applications, why wouldn't you use them in low-level applications?
What are in your opinion the advantages of C-style arrays over std::array?

If std::array makes things easier, why not use it if you can?

Just because you understand C-style arrays that doesn't mean you have to use them everywhere, especially if better alternatives exist.

Some standard library containers like std::vector (which uses dynamic allocation) could be better on Windows while not being a great solution on Arduino, but std::array is equivalent to a C-style array in terms of layout, memory usage, performance, and so on. If it's better on Windows, it's better on Arduino as well.