cols is short for columns and sets the size of the menu in character columns. The default menu width is pretty wide to have multiple menus next to each other.
You can nest your submenus within multiple layers of {if} commands to create arbitrary menu structures.
E.g. This adds a third layer to the cat option:
Favorite Animal Type: {formmenu: Cat; Dog; cols=10; name=top}{if: top == "Cat"}{formmenu: Siamese; Tabby; Persian; cols=10; name=cat}{if: cat == "Siamese"}{formmenu: Striped; Not Striped; cols=10}{elseif: cat == "Persian"}{formmenu: Splotchy; Not Splotchy; cols=10}{elseif: cat == "Tabby"}{formmenu: Cute; Not Cute; cols=10}{endif}{else}{formmenu: Terrier; Labrador; Golden Retriever; cols=10}{endif}
You can have any number of {elseif} commands in an {if} block. Please note that {elseif} is a new feature which is currently being incrementally released to all Text Blaze users so you may or may not have it in your extension yet depending on whether it has rolled out to you yet (it is available for all users in the web UI though). You can achieve the same thing as {elseif} using nested {if}'s but it is a bit messy. It should be be available in everyone's extension by Monday.