In JavaScript a class is a constructor, that is, a class is an object that you can new.
The syntax for defining a constructor in a class definition is not actually a defining a member of the class, it is just a way to specify parameters and, optionally perform some initialization in an organized manner.
The new keyword predates the ES2015 class syntax some two decades, before the introduction of which "classes" were witten as
function Greeter(m: string) { }
And instantiated using new Greeter("hi").
That is, you wrote a constructor function, and that is what a class was and largely still is.
When the class syntax was added in ES2015, it was designed, for the most part, as a more declarative syntactic sugar for the existing constructor function pattern.
Now, with that context, we can get to the meat of your question.
The constraint on T says that it must be a constructor, that is something that can be newed, and that is a class.
Such a type can be written several ways in TypeScript
As in the example:
{ new (...args: any[]): {} }
Describes an object that can called with new, passing zero or more parameters, that is a class, and that is a constructor.
For clarification, compare this with the type of an object that can be called without new
{ (...args: any[]): {} }
The above describes an object that can called without new, passing zero or more parameters, that it a function.
In modern TypeScript an alternative syntax is usually preferred as it is more concise and expressive
new (...args: any[]) => {}
For a for a class/constructor and
(...args: any[]) => {}
For a function.
As to the decorator's return value, it is leveraging a capability of class decorators to replace the class itself with another class. Class decorators can modify their target or, as we see in this case, replace it my returning a new class.
{ new (...args: any[]): {} }is a type literal for values that implementnew, i.e. which are constructor functions.