Variables in C++ can be categorized into different types including character, integer, floating-point, and boolean. Variables are declared to reserve space in memory and can be initialized with values. Constants do not change value once initialized. Variables have a scope defining where they are accessible - local variables only exist within the block they are declared while global variables can be accessed throughout a program.