2 means the number of command arguments that should be passed to the function in order to work. The command itself is also counted, so that's why it's 2. Now, if you write the command without setting "#userid" argument, it will print a message about the command usage (the message text is that from the 4th parameter of register_clcmd) and the function won't be executed.
About level and cid - they are allways like that, you won't need to change them. Level is the access level from the 2nd parameter of register_clcmd, cid shouldn't be touched - it's about the console message if you don't have the needed access or you have passed wrong number of command arguments.