Need some help with I2C

If you're still interested in doing this, here are a few point you might consider:

  Wire.beginTransmission(1); // talk to I2C device ID 1
  Wire.write(0x42); // At 0x42 (This is what I think I need to do to get to the 0x42 location)
  Wire.requestFrom(1, 2); // Request 3 bytes from ID 1
  Wire.endTransmission(); // end transmission

This should be that way round:

  Wire.beginTransmission(1); // talk to I2C device ID 1
  Wire.write(0x42); // At 0x42 (This is what I think I need to do to get to the 0x42 location)
  Wire.endTransmission(); // end transmission
  Wire.requestFrom(1, 2); // Request 3 bytes from ID 1

This is because Wire.endTransmission sends the characters to the device, you have to do that before you can read from the device (as you do with Wire.requestFrom()).

To check the communication I would use register 0x08 because there you know what it should return (the eight characters "HiTechnc").

The better value for you to read is probably in register 0x44 and 0x45. You directly get an integer value with the heading.