Struggling with millis() for two tasks

This

previousMillis = currentMillis; // Reset, as KA not needed for 160s (5s test)

is in the wrong place. If you remove all your comments, you will see that you are resetting the previousMillis timer right before you test it.

Move that line of code into the video timing section; reset it directly after the servo tap that ends the video. So, only reset the previousMillis timer if you've actually taken a video.

But wait! There's more. currentMillis is hopelessly out of date by then, on account of the time spent filming… so use

previousMillis = millis();

But wait! There's still more: the KA section is using a possibly hopeless outdated "currentMillis" so that needs to be updated

currentMillis = millis(); 

before it is tested against previousMillis to trigger a KA photo.

I moved the illumination of the LEDs to assist my slow reflexes. Also I moved

prevTrigState = trigState;

into the if statement it is used for, where it belongs.

 if (trigState != prevtrigState) {

Why it worked where it was is no doubt some unintended luck due to the blocking nature of the video. I could run it to ground, but life too short. This is the kind of thing that will come out when you move to FSM/non-blocking techniques.

So with those changes

Sometimes little problems like this can only be found by playing computer, tracing through the code with your finger tip and making no assumptions about how you think things are working, just "run the code".

Even copious Serial.print(ing) can be misleading, as you are biased in your placement of those statements and implicit assumptions may go untested and unreported.

a7