The node editor has got a few new features to improve workflow for node groups.
The design of node group interfaces has gotten a complete overhaul. Input/Output sockets of a node group are now part of a regular node (Group Input/Group Output). Long connection lines to/from the sides of a node group are avoided and don't move around each time the layout is changed.
The details of a node group's interface can be changed in the node editor sidebar (N). Sockets can be added or removed, descriptive names can be added and the details of the input data value defined there.
Node groups can be opened in different editors independently. Each editor has its own "history" of edited node groups, instead of forcing each editor to show the same group. This allows editing both the node groups as well as the outer instance of that group at the same time, using multiple node editor windows.
Nested node groups are now fully supported. A node group can be inserted or created inside another node group.
Recursive node groups are prohibited for all the current node systems: A node group can never contain itself (or another group that contains it). This is to prevent infinite recursion. Future node systems may still be designed to allow this in some form, but general node groups don't support it.
The node editor now allows pinning. When enabled, the editor will retain the material or texture, even when the user selects a different object. A node tree can then be edited independent of the object selection in the 3D view.
As an alternative to adding new nodes with the Add menu (⇧ Shift) there is now a list of panels in the node toolbar (T). Each node has a button which, after creating the actual node, also starts the transform operator, allowing quicker insertion into a node tree.
The underlying system for generating both the Add menu and the toolbar has been rewritten in python to make it easier to tweak and extend.