Sobre el primer problema ...
Si sabes que una instrucción SQL de tipo "campo=campo+valor" va a incrementear ese campo en N valor con un UPDATE simple . .no es necesario que hagas un SELECT antes .. simplemente usa tu variable (tu voto) . .eso sí . verifica el rango de valores que puede tener (en tu caso 1 a 10 numérico):
Código PHP:
$puntos=$_POST['puntos'];
if ($puntos > 0 && $puntos <= 10){
$query = "UPDATE productos set puntuacion= (puntuacion + $puntos) WHERE id='$id'";
// resto código .. ejecuta tu $query ...
} else {
echo "no te pases de listo xDD";
}
El otro problema sobre el "AVG()" .. no sé como lo estás aplicando a tu caso concreto .. (tus tablas y condiciones) .. pero sería ideal que pusieras exactamente como lo estás usando ... Y que describas que datos (ejemplo de unos cuantos) tienes en cada campo/registro de la tabla implicada.
Un saludo,