list() looks like a function call and behaves like an assignment target, which is why it can appear on the left of = and why it cannot be passed around, aliased or called.
list($from, $to) = [10, 99];
[$from, $to] = [10, 99]; // 7.0: the short syntax
foreach ($ranges as [$from, $to]) { /* ... */ }
list(, , $third) = $row; // skipping, and it stays ugly
The short [] form arrived in 7.0 and is now the one to use — it matches the array literal it is destructuring, which makes the symmetry obvious. Keys are not supported until 7.1, so this year an associative row still has to be unpacked by hand. Assignment order is left to right in PHP 7, which was undefined before and occasionally relied upon.