Ckona> Чем отличается "конструкция" d->accel_x Ckona> от переменной accel_x?
Ну стрелочка - это обрашение к полю структуры по указателю. Т.е. в данном случае d - это не структура, а указатель на структуру. Т.е. такая запись означает "взять поле accel_x структуры, на которую указывает d".
Ckona> Так в качестве Wx (Wy, Wz) надо писать d->accel_x или просто accel_x ?
В данном случае нужно писать d.accel_x, т.к. в данном случае d - это структура, а не указатель. Пусть тебя не смущают одинаковые названия (d) в loop и других функциях, это разные переменные (у них разные области видимости).
Ckona> error: base operand of '->' has non-pointer type 'imu_data'
Именно потому, что я написал выше. Здесь вместо -> нужно писать точку (.)
Про указатели советую почитать на просторах интернета, типа такого:
Книга по С - Указатели