Das ist ein Array aus Zeigern. Ein Zeiger auf ein Array wäre ein Zeiger auf Zeiger (weil Array Variablen selbst schon Zeigern entsprechen).
Weil new einen Zeiger liefert! Und kein Objekt
https://www.cplusplus.com/reference/new/operator%20new[]/
Ansonsten solltest du nicht außerhalb einer Funktion verwenden. Dann geht es auch.
Brauchst du hier überhaupt dynamischen Speicher oder machst du das nur weil du es irgendwo gesehen hast? Arrays kann man auch statisch initialisieren.