¿Y en qué orden estás navegando dichos scripts?
Es decir, para que la sesión exista en guarda.php debiste ejecutar primero index.php pues ahí creará el valor, si no entonces no existirá dicho valor por arte de magia.
Otro detalle que se nota del index.php ¿la variable $user_id de dónde sale?
A simple vista dicho código jamás funcionará, y por el ob_start() se ocultará un posible error en caso de ocurrir.
¿Estás consciente de lo que hace ob_start() o no?
Por favor, explica más a detalle.