Tampoco se porque
$datos["data"]["quests"][$i]["rewards"] te imprime un string cuando debería estar en formato Json.
Prueba esto:
$datos = json_decode($leer,true,768);
Sino funciona cambia esto:
echo "La variable $nombre tiene un valor de $valor<br>";
por esto:
$datos["data"]["quests"][$i]["rewards"][$nombre] = $valor.
Y no tendrías que asignar a ninguna variable más porque
ya estarían en una variable..
Para insertar en una base de datos tendrías que abrir un hilo nuevo especificando la BD o buscar por internet que hay muchos ejemplos y como te digo las variables ya la tienes
($datos["data"]["quests"][
XXXXXX]["rewards"]["coin"]) es solo insertar.
Eso, hasta aquí llego. Saludos