Variables

Una variable es un contenedor de datos con nombre. Fíjate en el ejemplo siguiente en el intérprete:
>>> caramelos = 10
>>> caramelos
10
>>> caramelos * 10
100
>>> caramelos + 13
23
El valor 10 se almacena en un contenedor (variable) de nombre 'caramelos'. A partir de allí, cada vez que se use caramelos Python mirará su valor y lo utilizará en su lugar (por ejemplo, caramelos + 13 vale 23 ya que 10 + 13 = 23).
En una variable puede almacenarse cualquier tipo de dato:
>>> saludo = "Hola, "
>>> saludo + "Pedro"
'Hola, Pedro'
No puede ponerse cualquier nombre a una variable. Para empezar el nombre no debe incluir espacios, sólo caracteres alfanuméricos (es decir, números y letras mayúsculas y minúsculas) y la barra baja. No debe empezar por un número. Y no puede usarse un nombre que signifique por sí mismo algo para Python. Unos ejemplos:
nombre
¿es correcto?
pepe

Pedro Guerra
no, incluye un espacio
perroVerde

perro_verde

r2d2

2r2d
no, empieza por un número
print
no, es una palabra reservada de Python
besos!
no, incluye un caracter prohibido, !
unNombreLargoParaRecordar

Ten encuenta que el símbolo de asignación (=) no es el símbolo matemático de igualdad. Cuando Python se encuentra con el símbolo = lo que hace es evaluar lo que está a su derecha y almacenarlo en la variable que está a su izquierda. Por eso, espresiones como
cuentas = cuentas + 1
que no tienen ningún sentido matemático, sí lo que tienen en el contexto de un lengaje de programación. Lo que quiere decir el ejemplo anterior es que el valor de la variable cuentas, se aumenta en una unidad, como puedes ver a continuación:
>>> cuentas = 5
>>> cuentas = cuentas + 1
>>> cuentas
6