A l'adresse 43 tu à le MSB de GyroX, les bits de poids fort, et à l'adresse 44 les bits de poids faible. A chaque adresse tu trouve 8 bits, soit un octet. Idem pour Y et Z.
On va venir lire en une seule fois, de l'adresse 43 à 48 à destination du buffer : ce qui était à l'adresse 43 est maintenant copié dans buffer[0], 44 dans buffer[1]...
Ensuite on reconstruit un seul entier (gyro_x) à partir des deux morceaux qui sont dans buffer[0] et buffer[1] avec l'opérateur de décalage de bits << qui équivaut à multiplier par 2 huit fois (x 2^8).
Par contre, j'ai l'impression que le programme n'est pas fait pour un MPU6050 où accélération et gyro sont géré par le même chip, et où les deux sont retournés MSB en premier. On dirait plus un programme pour une board avec ADXL345 & IMU3000 par exemple où les deux valeurs sont gérées par des chips différents. Ce qui semble être confirmé par le commentaire qui parle de "chips" au pluriel et ou gyro est dans l'ordre x,y,z et accel y,x,z.