new card[n][5] creates an array of n elements, each of which is an array of 5 elements, each of which is a card. Arrays of arrays are typically referred to as "2D arrays", that is, this creates an nx5 2D array of cards.
the new expression always returns a pointer to the first element of the array that was created: in this case, the first element is an array of 5 cards, and that is exactly what you declare with card (*players)[5].
A pointer to an array of 5 cards is not related to a pointer to a pointer to a card, so the second initialization fails.