das "@" gibt die Speicheradresse von der Variablen zurück. Kurz und knapp: Die funktion erwartet einen Pointer/Zeiger(auf eine Speicheradresse).
PWindowPlacement ist vom Typ Pointer (typisierter Pointer).
Allerdings ist dies eben nur ein Pointer und zeigt nur irgendwo hin, Speicher muss man also selbst reservieren und das geht mit "new". Freigegeben wird der Speicher dann mit "dispose" (es gibt noch andere Funktionen für diese Zwecke).
bei variante1 (@wp) wird also die Adresse durch das "@" geholt und
bei variante2 (wp(PWindowplacement)) ist wp bereits die Adresse/Pointer und diesen muss man noch auf speicher zeigen lassen.
Bezüglich des @ operators etc. empfehle ich die Grundlagen von
http://www.delphi-source.de
falls du englisch kannst hier ein Beitrag mit Link zu einem tollen Lehrvideo zu Pointern (sollte man gesehen haben (selbst ohne Englischkenntnisse verständlich))
http://www.delphipraxis.net/internal...=357830#357830