And in today's family situations with divorce, remarriage, separation.... two such records might not be enough and you might need more than one address label for some students. In a similar situation, I set up a "household" table with relationships that established a many to many relationship between children and Household records.
But to stick with what you have, you can set up a case function to calculate the different ways to refer to the parents by name on your address labels. This field would be defined in the students table.
Let ( [fname1 = Parents::FirstName ;
fname2 = If ( Count ( Parents::LastName ) > 1 ; GetNthRecord ( 2 ; Parents::FirstName ) ;
lname1 = Parents::LastName ;
lname2 = If ( Count ( Parents::LastName ) > 1 ; GetNthRecord ( 2 ; Parents::LastName )
Case ( Count ( Parents::LastName ) = 1 ; fname1 & " " & lname1 ;
lname1 = lname 2 ; fname1 & " and " & fname2 & " " & lname1 ;
fname1 & " " & lname1 & " and " & fname2 & " " & lname2
) // case
) // let
Note: when referring to fields from a related record, the data will come from the first related record. Thus, there's no need for getNthRecord to refer to the name in the first parent record.