70Watt Latching Solenoid - erratic control issue

On the data sheet it lists 100ms for ON pulse and 900ms for OFF

Agreed, that's what you want to do but that is not what the program is doing.

Look at the delay again. You're turning the "pulseRelay" ON for 900ms in the "else if(!state)" block.

This second block should just be an "else" rather than testing again. It's a boolean, it's either true or false. Testing both cases is a poor practice.

You're possibly overheating the coil and causing it to bind. Just remember the 900ms off time is furnished by the 5000ms delay in the main loop. When writing tests, I would put any necessary delays all in one place for clarity.

Try this code for the subroutine.

void shutterToggle(boolean state) {
  if ( !state )
  { //latched - i.e. shutter open
    digitalWrite(LED_BUILTIN, HIGH);
    digitalWrite(relay1, HIGH);
    digitalWrite(relay2, LOW);
    delay(20);
    digitalWrite(pulseRelay, HIGH);
    delay(100);
    digitalWrite(pulseRelay, LOW);
    delay(900);
  }
  else { // not latched / shutter closed
    digitalWrite(LED_BUILTIN, LOW);
    digitalWrite(relay1, LOW);
    digitalWrite(relay2, HIGH);
    delay(20);
    digitalWrite(pulseRelay, HIGH);
    delay(100);
    digitalWrite(pulseRelay, LOW);
    delay(900);
  }
}