The key thing here is that and and or are not logical operators.
They are instead "short-circuting" operators, which means they don't evaluate all arguments if the result is clear from the first arguments.
The or operation returns the first "true" (non-false) value.
> (or #f #t (/ 1 0))
#t
The evaluation was "short-circuited" in the sense that (/ 1 0) was never evaluated.
The second thing to keep in mind is that #f is the only false value and all other values count as true.
This variation of the first example shows that #t can be replaced with any non-false value:
> (or #f 42 (/ 1 0))
42
In short:
The or operation returns the first "true" (non-false) value.
If there are no "true" values, then the result is #f.
Arguments after the first "true" are not evaluated.
Similarly:
The and operation returns the last "true" value, if all arguments are "true".
If at least one argument is false, the result is #f.
If a false argument is found, the following arguments are not evaluated.