Most developers in Hercules just commit to trunk directly without testing the code on a developmental branch, but they try and test the code themselves to avoid major bugs.
As for the branches, when a big feature is planned to be added or for some other reasons, one or more developers may decide to branch trunk and work on it on that branch. That way, it's like they have a own repository that can be worked on as if it was the main one. Branches can be of multiple nature (changing script engine to LUA, password encryption improvements, etc) and that's why there isn't only one branch.
Think of the development of Hercules like a tree in reverse: some code is directly in the trunk and the branches start somewhere out of it and end up contributing to that trunk.