IBM has provided a demo example in the product wiki to walk you through the steps to execute a simple extension.
The beauty of this approach is that code which would previously have been put into a custom attribute definition (which still works for backwards compatibility) can now be either placed into a custom FreeMarker macro in the commonUtil.ftl or can simply be wrapped around the display macro for the field in the other templates.
One word of advice, the documentation still has remnants of the Connections 3.x methodologies and links within some of the pages weave you between both methodologies. When looking for information on enabling extension attributes for editing via the API, for example, it still references all configuration being done in the profiles-config.xml. That file has been broken up into multiple files, with certain configuration remaining there and other configurations being moved to profiles-types.xml.
If the OOTB template files are not extreme enough of a UI change for you, it would appear that the documentation indicates you can completely rewrite the display and editing templates to your liking. The ability to add/remove tabs from Profiles, reorder fields (which I have already used this for), add new fields, etc makes for a very flexible and interesting feature now.
Last note, there is a setting which you will want to explore:
UI Template rendering configuration information
<!-- FTL template reloading to test customization, in production this value should be set to 0, but during customization set to value in seconds -->
This will ensure that while developing your templates checking them out and in without restart will render your changes.
For more information about FreeMarker, check their SourceForge page here.