Custom tags in ColdFusion allow encapsulating reusable code and functionality into black box components. They are file-based and ColdFusion searches directories like the custom tags path to locate them when called. Variables only exist within the custom tag, but attributes can be passed in and variables returned. Attributes allow passing data to the tag and required/default attributes enable validation. Custom tags have start and end tags that provide execution control and context.