glDrawElements() doesn't support a "blank indices table".
glDrawElements() must always be given explicit data about in what order vertex indices are to be drawn, either using a pointer to a memory buffer (OpenGL <= 2.1 only), or an offset into a bound VBO.
glDrawArrays() acts like
glDrawElements() would if it had been given an array of values [0, 1, 2, ... , n], where 'n' is the
count value passed into either function.
glDrawArrays() requires less data than
glDrawElements() (in that the order of indices is implicit, instead of requiring a block of data to be transferred to the GPU), and so it should be marginally faster if your data is in that format. But in practice, the difference is unlikely to be worth worrying about.