Difference between glDrawArrays() and glDrawElements()

I’m doing inline documentation for ofBaseGLRenderer and am trying to put into words the difference between glDrawArrays() which is called internally by a function like this, and glDrawElements() called here. My initial instinct is that glDrawArrays uploads all vertices of a vbo to the graphics card where glDrawElements uses indices to upload only the minimum vertices needed (by reusing vertices using indices, more here). A few brief google searches reveal that glDrawElements is much faster than glDrawArrays which supports my theory but because this is going to be official OF documentation I want to be absolutely sure this is the case (I don’t trust my hunch) and be able to describe the difference as clearly as possible. Also, are the words indices and elements as used here interchangable, and if not how are they different?

Thanks!