Для начала нужно понять, что именно хочется получить, так как следует различать - пользовательское свойство (для инфоблока, далее просто свойство) от пользовательского поля (далее поле, для всех остальных сущностей системы).
Потом, нужно подумать, можно ли это получить другим способом. Например для инфоблока, вы можете использовать существующее поле "HTML/текст" и в нем указать, что принудительно использовать HTML без возможности смены типа.
Если это не то и уж очень хочется сделать свое, то можно поискать информацию в интернете:
Есть описание как создать свои типы свойств -
https://blog.sibirix.ru/2012/05/12/user-type-descr... статья хорошая и описание приличное. Или вот например тут -
blog.gealab.ru/web/user_type_oniblockpropertybuild... есть описание
Если например вы хотите создать новый тип поля:
https://dev.1c-bitrix.ru/community/blogs/oracle/183.php
Но хочу отметить сразу: Бизнес-процессы и Библиотека документов НЕ будут использовать Ваши типы полей - их список не расширяем и зашит в ядре системы.