For example, you want to mark some of your records as “for testing” so you can keep test data separate from real data. The obvious thing to do is to use the “yes/no” field with the default “no”. However, when you go to use it you’ll basically be comparing “yes” to “no”, which you can do as text, by converting the boolean into a text. You can also compare one text to another anyway. So if you use a text field, instead of a yes/no field, you can put “yes” or “no” into it if you want, but you can also put “test 20190424 v2.3 Jones” to identify very precisely who is doing the testing, what they’re testing, and when they’re testing it. Then any text in the field counts as a “yes” and the string can carry a lot more information if you want it to.
Another example would be to use the datetime field instead of the yes/no field. That way you can a timestamp when something happened, not just that it happened, like if something passes a test. The presence of data is a “yes” and the data itself can carry a lot more information.