To answer some of your questions

1) I Have a list of names (for example, column B rows 1 to # are text strings, some empty.) What I would like to do is return the name that appears most often in this array of strings--like what the MODE function does for numerical values. If I need to create a separate table that counts the appearances of each name then grab the corresponding name of the MAX value of that table, that will be fine.
Use the function COUNTIF(range,="whatever_name")

Finally, 3) Throwing back to #1, next to each name there is a number of 'items' recorded. What I would like to do with this is count, again for each name, the total number of items. Say in Row 3 Bill has 6 oranges, Row 4 Jeff has 12, and Row 5 Bill has 2. The output I would like to get from this is Bill having 8 oranges total and Jeff having 12.
The end result from this is that I would like to know who has the most 'items', and how many items that is. If it's possible to do this without creating a new table of names and totals, then all the better.
Use SUMIF(range,="whatever_name",range_to_sum)

Ed