Most of the parentheses are just parentheses, used to group an expression so its evaluated before the outer operator gets it. The outer pair are so that adjacent operators when/where the #defined name is used don't affect evaluation within it. The (n) after the name makes the name a function-like macro, with parameter n. The pair immediately round volatile unsigned long * are a cast operator, in this case casting an integer to that pointer type.
There's no particular 'magic', this is just 'vanilla' C, constructing a pointer to a port (using an architecture and processor dependent integer base address) and dereferencing it for access.
Arguably, the parameter n should have parentheses round where its used, as if an expression not wrapped in parentheses containing any operator with lower precedence than multiplication is used for n, the result will be incorrect and probably cause a misaligned pointer error. Here's the fixed version:
#define ITM_Port32(n) (*((volatile unsigned long *)(0xE0000000+4*(n))))