Arduino Ethernet - TCP IP Questions

I wasn't sure if Null terminating each char would add to the string each time.

I'm not sure what you mean by "add to the string each time".

Suppose you have a bookshelf that can hold 100 books. But, the books fall over if you don't use a book end, when the shelf isn't full.

Now, you need to unwrap and put 10 books on the shelf. You can unwrap a book, and put it on the shelf, and let if fall over while you get the next book ready. When it is ready, you pick up the books that have fallen over, and put the new book at the end, and let it fall over...

Or, you can unwrap the first book, put it on the shelf, and put the book end in place. Then, you unwrap the next book, put it in place of the book end, and put the book end back at the end.

THAT is what is happening when you put a character in place of the NULL and put another NULL at the end.

I figured out that I do need the client = serial.available() for some functionality (original question 2) but I am not entirely sure what it is doing.

That line of code is not what you actually have. You have either

   byte numBytes = Serial.available();

or

   client = server.available();

In the first case, you are asking the Serial instance how much unread data there is. In the second case, you are asking the server if there are any clients that need attention.