Help using millis, one LED continuously triggers while the other LED never triggers

I think you should learn to use variable arrays to hold and access related data by numbers under the same name. One function could serve multiple sets of data using a 2D array.

Linked from the ARDUINO REFERENCE PAGE -- arrays!

Functions in void loop() run over and over... 10's of times per millisecond mostly checking timers, inputs and status variables for a trigger condition, a change to act on.

If the function kept track of what it is doing, like waiting for input it could have code for that 'process state' (kept in a variable) and it could have a section for every step the process does then each time a step is done the state is changed to the next so next time the function runs it runs the code for the process state.
Consider a washing machine: start. fill, agitate, etc are states.

The powerful switch-case statement that organizes state driven code very well!

Learn the lessons on simple examples to know what you can do then take a better than fresh view of the job. Simplify it, model it, make 2 copies and throw the first away (Nick Wirth, Aug 85 Byte, quoting then old computing wisdom... he authored Pascal then Modula).

Sometimes it helps to draw an array of names on paper to map data in ram to keep track. A struct lets you make your own named groups of other variables amd it's a variable too that can be arrayed! So couple the read int with the pin number byte and an unsigned time holder (16 bit millis can time 65 second intervals and checks faster than 32 bit) per sensor and one function runs any struct in the array.

Every step you learn, you might crunch that sketch down.

All true, i know that and i'm all for non blocking code.
But for (quick) debugging delay is OK to me (that's the only exception over non blocking code i can think of).
It saves you the hassle of writing much more extensive code, and possibly introducing more trouble than necessary just to do some debugging (remember that not everybody is at the same level of coding experience).
All needed in my example is 2 short lines of code per variable you'd like to inspect.
Only if speed is of any importance during debugging, one should avoid delay() to my opinion.

Use a logic analyzer to see what happens.

Insert Serial.println()´s at points of interrest.

I disagree. Whitespace is good. Also, if you want to autoformat, just do ctlr+t.

This kind of whitespace is excessive. ctrl-T won't change it.

    Serial.println(y5_a);




 int xTolerance = 35;
  int yTolerance = 35;





  if (abs(x4_a) > xTolerance || abs(y4_a) > yTolerance)

for sure