If you want to match each item in a against any item in b, then you can do:
[any(item in item2 for item2 in b) for item in a]
If you want to match each item in a against only the item in b at the corresponding index, then you can do:
[item in item2 for item, item2 in zip(a,b)]
Both of these return [True, True] with the current example:
a = ['The weather today is awful', 'Last night I had a bad dream']
b = ['The weather today is awful and tomorow it will be probably the same', 'Last night I had a bad dream about aliens']
but if for example you reversed the ordering of b:
b = b[::-1]
then the first expression wouold still return [True, True], whereas the second one would now return [False, False] -- in other words, the first element of a is now contained in an element of b but not the first one, and similarly the second element of a is now contained in an element of b but not the second one.
If you are just interested in whether any item in a is contained in any item in b, or the corresponding item in b, then use these list comprehensions (or better, the analogous generator expression) as input to any. For example:
any(any(item in item2 for item2 in b) for item in a)
tests if any item in a is contained in any item in b
or
any(item in item2 for item, item2 in zip(a,b))
tests if any item in a is contained in the corresponding item in b