Azért a változók neveiről adhattál volna magyarázatot, hogy mi micsoda, de nagyjából kitaláltam.

Kezdjük a 3-sal. Ha a turaString.length azt adja vissza, hogy hány neved van, akkor ezt nem használhatod arra, hogy a leghosszabb nevet meghatározd. Ahhoz hogy egy név hosszát meghatárzod kell (pl. a legelső névét) a turaString[0][0] hosszát és a turaString[0][1] hosszát kell összeadnod, mivel vezetéknév + keresztnév hossza.
Most erre két módszer van, ami szerintem egyszerű. Lehet egy turaString.length hosszúságú tömböd, amiben minden névhez tárolod a nevének a hosszát. A végén megnézed, hogy melyik a legnagyobb szám és minden ahhoz a számhoz tartozó nevet kiíratsz.
A másik lehetőség, hogy csak egy int-ed lesz, amibe a legnagyobb számot rakod be, ehhez egyszer végig kell menned a neveken. Majd ha meg van a legnagyobb, akkor újra végigmész a neveken, és amik hossza megegyezik a legnagyobb-ban tárolt értékkel, azokat kiiratod.
A 4-es. Itt felesleges a 2 for ciklus, mivel a vezetéknévvel nem kell összehasonlítanod a keresztneved, mivel ez nem a feladat része. Elég ezt nézni turaString[i][1].equals("Anna").
Szerintem a null ellenőrzése is felesleges, mivel csak akkor írsz ki valamit, ha az if-ben lévő állítás true, vagyis ha a keresztnév megegyezik az Annával. Illetve ez ezért sem jó, mert csak azt írod ki, ami megegyezik a neveddel, nem pedig a teljes nevet. Vagyis ha turaString[10][1].equals("Anna") == true, akkor azt írja ki, hogy turaString[10][1], ami annyi, hogy "Anna", mivel true a kifejezés értéke.
Javaslom, hogy a println-ban külön először legyen a vezetéknév turaString[i][0], majd a keresztnév turaString[i][1].
Remélem nem hagytam ki semmit és érthető volt, ha valami nem okés, akkor írj.