Says should use List<T> whenever possible, it is optimized for best
performance. Use Collection<T> as a base class for a custom
collection when you need to build one.
covers most of the details for designing public APIs like what type of methods should be placed in the parent classes, what type of collections should be used and where.