As a general rule, if a value of a custom field is empty, its corresponding Metafield either does not exist or is an empty string.
A test for that particular custom field will not return anything ("blank" in Liquid terms), which gives you a nice clean syntax for checking if a given field has a value:
For multi-language fields, where there can be a value for one language and no value for another, you will need to test if the content for a specific language is a blank string or not:
If you are testing to see if an element in a repeatable field has a value, you need to test if the element's value is either an empty string or null, both of which can be tested via the length of the element's value: