TWI/I2C - Arduino to Arduino, sending float

You need to read up on doing loops. And making functions. That is just very repetitious.

Anyway ...

 Wire.beginTransmission(2);
    Wire.requestFrom(2, 24);              // request 24 bytes from slave device #2
    if(Wire.available())

You have to do the endTransmission first. In fact you aren't sending anything so the beginTransmission isn't needed.

Instead of Wire.available you should check you got 24 bytes back, eg.

if (Wire.requestFrom (2, 24) == 24)
  {
  // got a valid response
  }