Here's a quick explanation of what worked for me so far.
As noted in the FolderSetParmTemplate description:
"A folder set is a group of adjacent folders, only one of which can be displayed at a time. A folder set corresponds to a parameter, and the value of this parameter determines which folder is displayed."A folder set is a group of adjacent folders that are displayed as tabs.

For example:
node = hou.pwd()
# Get template group of current node.
ptg = node.parmTemplateGroup()
# Create folders.
fld01 = hou.FolderParmTemplate("fld01", "FT1")
fld02 = hou.FolderParmTemplate("fld02", "FT2")
# Set folder type.
fld01.setFolderType(hou.folderType.Tabs)
fld02.setFolderType(hou.folderType.Tabs)
# Add folders to the template group.
ptg.append(fld01)
ptg.append(fld02)
# Update paramter of the current node.
node.setParmTemplateGroup(ptg)
Now, if the parmTemplete is read from the first folder created, the FolderSet is returned.
print(node.parmTuple("fld01").parmTemplate())
<hou.FolderSetParmTemplate name='fld01' folder_names=('FT1','FT2') folder_type=Tabs tags={}>
To select which of these folders should be displayed, the value of the first parameter in the parameter tuple of the first folder in the set can be changed, for example:
# Set visibility of the second folder.
node.parmTuple("fld01")[0].set(1)
Despite this, the folder type in a folder set still confuses me, because if there are no tabs there is no set.
EDIT:
The confusion is probably due to the fact that there has been a restructuring in the use of folder templates. Parm template groups have been around since a certain version and they make it easier to work with them. Previously parameter templates were set using the addParmFolder or addParmTuple methods of a node type or node, which must not have been so easy to use for more complex structures. With Parm Templates Groups, hierarchical structures can be realized directly in the code.
# Creates two folders with parameters.
grp = hou.ParmTemplateGroup(
(
hou.FolderParmTemplate("fld_a", "Folder a",
parm_templates=(
hou.FloatParmTemplate("x", "x", 1),
hou.FloatParmTemplate("t", "translate", 3),
),
folder_type=hou.folderType.Tabs
),
hou.FolderParmTemplate("fld_b", "Folder b",
parm_templates=(
hou.ToggleParmTemplate("test", "Test", default_value=True),
hou.MenuParmTemplate("menu", "Menu",
menu_items=("1","2","3"),
menu_labels=("a","b","c"))
)
),
)
)
And the independent creation of folder sets is therefore no longer necessary. If you create a FolderParmTemplate and call it, a FolderSetParmTemplate object is always returned and not the actual FolderParmTemplate. The folder set does not necessarily have to contain additional folders. And if there are folders next to each other, they are returned as such in 4set, the functionality with the visibility is of course only possible with the tabs.