If memory serves me, Crown Princess docks in Brooklyn. I would use LaGuardia (domestic) or JFK (international/domestic). Newark would be a last choice. Transfers offered by Princess were $40/ per person last time I checked, so if there are two or more of you, you'd be better off taking a taxi. Check this out for more info.
LaGuardia is closer but not by too much. As for my own travel, whenever it's domestic, I prefer LaGuardia because I live in Manhattan and it's a little cheaper by taxi to midtown. For you, it may be the same to the cruise terminal, but I doubt the difference will be all that much. In terms of the actual facilities themselves, I think they are both about the same.
If the ship is sailing from Red Hook - Brooklyn then LaGuardia or JFK will work. Cunard advised me that they are both a similar distance from the pier and Cunard and Princess share the dock. Sometimes it depends on your airline, e.g. JetBlue flies into JFK only.
Sun Princess (2 times), Mississippi Queen, Dawn Princess, Coral Princess (2 times), Regal Princess, Grand Princess (2 times), Diamond Princess, Maasdam, QM2 (16 times)
We sailed on the Crown this past October. LaGuardia is closer. The taxi going to the dock was $36, coming back to the airport was $29 and traffic was busier coming back. The taxi is the best way to go. We enjoyed the Crown, the best cruise time ever. Have a great cruise. Jim and Helen