Q:

Any active harm in `if False in [a, b, c, d]`

Is there any active harm in using if False in [a, b, c, d]? 
It reduces the size of the code and it works in the interpreter.  But is there any active harm such a condition can cause? 

A:

There's no harm in:
if False in [a, b, c, d]

It's more or less equivalent to:
for i in [a, b, c, d]:
    if i == False:
        return True
return False

but it checks for the presence of the literal False object only.  It doesn't check for objects that are "falsy", i.e. they behave like False in an if condition.  Examples of other values that are falsy are empty strings, empty lists or None. 
See the docs for the details on that: Truth value testing
If you just want to check whether a list contains any falsy element, instead use:
if not all([a, b, c, d])

which looks like:
for i in [a, b, c, d]:
    if not i:
        return True
return False

which is usually what you want. 

A:

No, there normally is no harm such a condition could cause. 
The in comparison operator doesn't alter anything.  If any of the variables a, b, c or d is indeed 0 or False, then the test would succeed, otherwise it would fail (return False).  The four variables collected (temporarily) into a list would not be affected themselves. 
(Why 0?  Because bool is a subclass of int and False == 0 is True in python.  So False in [0] is True as well.  Try it out in your interpreter; issubclass(bool, int) returns True, and then try True + 1 for more surprises). 
The one exception would be if someone had made the mistake of creating a __eq__ equality hook on a custom class that altered the state of the instance.  That would be a big bug in that custom class, not anything specific to the in statement itself.