I have a grid that will contain 0, 1 or several email addresses. I would like to know what the best practice is for labeling this.
Should the header read
- Phone Number
- Phone Numbers
- Phone Number(s)
- or something else?
The label is referring to the actual table cell info (describing it), so unless you have two or more numbers in a cell then you should stick to singular. In every table you have related data on every row, and you actually read table rows not columns.
Recording No.2 in which Username2 has Phone Number2 (so in the table header should be "Phone Number").
In your case, "phone number" attached to email_x is 098 765 432.
As long as we talk about the table/list title, it is referring to the entire list of phone numbers so it should be plural - Phone Numbers (title applies for the entire zone that it describes, sg vs plural, depending on what it contains, in this case a list = more than 1 element).
UPDATE (after carefully analyzing your table data)
My explanation above is referring to general usage, in your case, if we are talking about a single person's phone number or numbers you can actually use "Phone number(s)" (if only one number can exist), but that is related to upper hierarchy (user).
Simply use "Phone Number" if you need one or more phone numbers. If you need more than one number then use "Phone Numbers".