What are CVARS? Heres your answer:
A CVAR is a ClientVARiable, what is a Client Variable you say? Ill answer that with a different question which is equivalent: What are options?
By now you should understand that a CVAR is ONE option that you have selected and configured personally. This means that for example, if you type in the console "crosshair_size 1200" your crosshair changes its size to "1200". A CVAR can also be a variable for a server, or even a variable that executes a command. For example:
"mptimelimit" is a server CVAR ie a server variable. Setting this CVAR to "mptimelimit 20" would make each map last 20 minutes.
"chooseteam" is an executing CVAR ie an "unvariable" because nomatter what you do with it it doesnt change by itself, "chooseteam 1" does not change the way "chooseteam" itself works. HOWEVER, it can be extended to "make" it a variable, example: "chooseteam;menuselect 2;menuselect 3" will change your team to CT and make you use the SAS model. If you now change that to "chooseteam;menuselect 1;menuselect 3" you will change team to T and use the Guerilla Warfare model. If you now, once again change it, into "chooseteam;menuselect 1" then it will end with a menu to choose which model you want for the Terrorist team. This works the same for the "buy" command as well as for many others.
When you press B (default) you will get a buymenu, depending which menu type you are using you will experience a different sort of menu, both have same CVAR funcitons however, because the two menus only LOOK differently. SO "buy" brings up the menu because of what b is bound to. b = buy "buy;menuselect 1;menuselect 1" buys you a glock because if you press B and then 1 twice you get a glock.
To wrap things up:
A CVAR is a VARIABLE which is usually CLIENT-SIDE. However if you are using RCON or any other admin-based mod (see What is RCON? tutorial) or if you're using the server, you can alter the SERVER options which will apply to everyone (these are however, options they usually can't control at all).