Arrays in C allow storing of homogeneous data items in contiguous memory locations. An array variable stores multiple data items of the same data type. Arrays provide advantages like code optimization through accessing elements with fewer lines of code, easy traversal and sorting of data using loops, and random access of any element. The main disadvantage is that arrays have a fixed size set at declaration. Key array terminology includes size, type, base address, index, and range. Arrays can be declared and initialized at the time of declaration or by taking input from the user. Multidimensional arrays like 2D arrays represent data in rows and columns like a matrix.