Как читать дженерики в TypeScript?
Данная функция принимает аргумент constructor любого типа T, который является подтипом типа { new (...args: any[]): {} }

В свою очередь { new (...args: any[]): {} } - это абсолютно тоже самое, что и new (...args: any[]) => {}. Это сигнатура конструктора, с любым количеством любых элементов и инстанциирующий значение с типом {}.

Ну и тип {} - это множество всех не нулевых значений (не только объектов), то есть по сути это как тип any, но без null | undefined и с не сломанной вариантностью. Здесь его безболезненно можно заменить на тип unknown, в отличии от тех же аргументов, где из-за контрвариантности аргументов функций (и конструкторов) предикаты на типах ломаются и без any нормально не сделать.

В целом, под такой дженерик подойдет абсолютно любой конструктор
Всё правильно. Квадратные скобки чтоб обозначить, что args - массив, в случае с any их можно выкинуть.