1) Since the list is kept as an array, when an Object is removed from the list, any following items should be "scooted down" to remove the vacated space in the array. See the remove() method in Listing 4.27 (book version 3) that illustrates this for an IntList.
2) The ObjectListIterator is a friend of ObjectList. As such, it has access to the private attributes of ObjectList. ObjectListIterator keeps an index, representing where it is in iterating through the list. This allows currentObject() to immediately return the object at spot index (e.g., list[index]). See currentItem() in Listing 4.29 (book version 3) for an example.