When you created the class, you gave it properties: FirstName and LastName. Which means that each instance of a class has it's own set of LastName and FirstName, which aren;t share with any other instance.
If you like, think of a car. Each car has it's own key, and it's own glove box.
Take five cars, and each will open with it's own key only - and inside each car is a separate glove box. If you place an item - your mobile phone, say - in the glove box of the Green car, then you wouldn't expect to find it in the Red or Blue cars, would you?
So if you create two instance of your Contact class (by using New twice) each Contact instance has independant FirstName and LastName:
Dim firstPerson As New Contact()
firstPerson.FirstName = "joe"
firstPerson.LastName = "smith"
Dim secondPerson As New Contact()
secondPerson.FirstName = "mike"
secondPerson.LastName = "hunt"
Console.WriteLine("{0}:{1}", firstPerson.FirstName, firstPerson.LastName)
Console.WriteLine("{0}:{1}", secondPerson.FirstName, secondPerson.LastName)
" Is there a better way to keep up with firstperson and secondperson and on and on?"
Of course there is! Just use a List (Of Contact):
Dim contacts As New List(Of Contact)()
Dim newContact As New Contact()
newContact.FirstName = "joe"
newContact.LastName = "smith"
contacts.Add(newContact)
newContact = New Contact()
newContact.FirstName = "mike"
newContact.LastName = "hunt"
contacts.Add(newContact)
For Each c As Contact In contacts
Console.WriteLine("{0}:{1}", c.FirstName, c.LastName)
Next
[edit]Forgot to add the second contact to the List! :O[/edit]