Hi, thanks for your breakdown.
I took your part about using rules and expressions correctly and re-evaluated how I was doing everything. The first screenshot I sent was from a rules "advanced condition"by the way, and I had the logic expressions only because I could not figure out why my advanced condition was not working.
I ended up changing the advanced condition that was checking for 'less than or even to' AND 'is empty' to two seperate expressions. One advanced condition checking for 'less than or even to' and one checking if it does not contain a value. As per below.

I'm still not sure why that 'Is empty' check doesn't work in an advanced condition. But this is how I resolved it.
The reason I wanted to do it this way, instead of just a normal expressions, is that I don't want the Check-Out date changed EVERY time that Check-In is changed. For example, if a user sets a Check-In, then a Check-Out, but then wants to move the Check-In date a day or two earlier. They shouldn't be forced to re-enter their Check-Out.
But thanks for your help anyway guys. It lead me to the answer I wanted.