Just as with pointer arithmetic (because that's what this actually is) you don't multiply by the size of its elements. This:
array[2]
is the same as this: *(array + 2)
The compiler knows what the type of data the pointer refers to and can produce the byte offset itself. Also: "...it's always pointing at the first element of the the array"
Eh... an array can degrade into a pointer when needed, but what does the following produce? char arr[10];
??? x = &arr;
Is "x" a pointer to pointer to char? From your assessment it would seem so, but in reality the type of "x" is char (*)[10]
i.e., pointer to array of char 10. An array is an array, and arrays can degrade into pointer types.