Im Wesentlichen ist Speed_array16 ein Zeiger, der auf das 1. Element von Speed_array zeigt. Hier wird das Array deklariert: uint8_t Speed_array[8];
und hier der Zeiger: uint16_t* Speed_array16 (Zeiger wegen dem *). Speed_array ohne Indexoperator ([]) ist ein Zeiger auf das 1. Element seiner Elemente. Dieser Zeiger wird in uint16_t gecastet und die Adresse dem Zeiger Speed_array16 zugewiesen. (uint16_t*) ist der Cast. Jetzt kannst du über x = Speed_array16[0]; auf den Speicherbereich, also die Elemente von Speed_array zugreifen ohne jedesmal zu casten.