¡Excelente pregunta! Es fundamental entender cómo funciona el "mago detrás de la cortina". Te lo explico paso a paso:

El Flujo Completo del Formulario
1. Vista (Formulario) → Controlador
php
<?php
// Esto genera un formulario HTML que apunta al controlador actual
$form = ActiveForm::begin([
    'action' => ['libro/crear'], // ← ¡AQUÍ ESTÁ LA CLAVE!
    'method' => 'post'
]); 
?>
Esto genera HTML como:

html
<form action="/index.php?r=libro/crear" method="post">
    <input type="text" name="Libro[titulo]" value="">
    <input type="text" name="Libro[autor_id]" value="">
    <!-- ... otros campos -->
</form>
2. Controlador - Donde la Magia Ocurre
php
public function actionCrear()
{
    $model = new Libro();

    // ¡ESTA LÍNEA ES LA CLAVE!
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        
        // Aquí se guarda en la base de datos
        if ($model->save()) {
            Yii::$app->session->setFlash('success', '¡Libro guardado!');
            return $this->redirect(['crear']);
        }
    }

    return $this->render('crear', ['model' => $model]);
}
Desglosemos el Proceso Mágico:
Paso 1: $model->load() - Recoge los Datos
php
// Esto hace automáticamente:
$postData = Yii::$app->request->post();
// $postData contiene: ['Libro' => ['titulo' => 'Mi libro', 'autor_id' => 1, ...]]

$model->titulo = $postData['Libro']['titulo'];
$model->autor_id = $postData['Libro']['autor_id'];
// ... y así con todos los campos
Paso 2: $model->validate() - Valida los Datos
php
// Usa las reglas que definiste en el modelo
public function rules()
{
    return [
        [['titulo', 'autor_id'], 'required'], // ← Se validan aquí
        [['titulo'], 'string', 'max' => 255],
    ];
}
Paso 3: $model->save() - Guarda en la BD
php
// Internamente hace:
public function save()
{
    if ($this->validate()) {
        // Genera y ejecuta el INSERT SQL automáticamente
        // INSERT INTO libros (titulo, autor_id, ...) VALUES ('Mi libro', 1, ...)
        return $this->insert(false);
    }
    return false;
}
Versión Visual del Flujo:
text
FORMULARIO HTML
     ↓ (envía POST)
CONTROLADOR actionCrear()
     ↓
$model->load()       ← Recoge datos del formulario
     ↓
$model->validate()   ← Verifica reglas
     ↓
$model->save()       ← INSERT en la base de datos
     ↓
REDIRIGE o MUESTRA ERROR
Ejemplo Práctico para Entender Mejor:
Tu Formulario Genera Esto:
html
<input type="text" name="Libro[titulo]" value="Cien años de soledad">
<input type="number" name="Libro[autor_id]" value="1">
El Controlador Recibe Esto:
php
// Yii::$app->request->post() contiene:
[
    'Libro' => [
        'titulo' => 'Cien años de soledad',
        'autor_id' => '1',
        'categoria_id' => '2',
        // ...
    ]
]
Y $model->load() Transforma Esto:
php
// Convierte automáticamente:
$model->titulo = 'Cien años de soledad';
$model->autor_id = 1;
$model->categoria_id = 2;
// ...
¿Cómo Sabe Dónde Guardar?
El Modelo Sabe Su Tabla:

php
class Libro extends ActiveRecord
{
    public static function tableName()
    {
        return 'libros'; // ← ¡Sabe que guarda en la tabla 'libros'!
    }
}
ActiveRecord Genera el SQL:

php
// Automáticamente crea:
INSERT INTO libros (titulo, autor_id, categoria_id, ...) 
VALUES ('Cien años de soledad', 1, 2, ...)
En Resumen:
El formulario envía datos al controlador via POST

$model->load() mapea los datos del formulario al modelo

$model->validate() verifica que todo esté correcto

$model->save() genera y ejecuta el INSERT automáticamente

La magia está en que Yii2 hace todo el trabajo pesado por ti: no necesitas escribir SQL, no necesitas mapear campos manualmente, todo es automático y seguro.

¿Quieres que profundice en alguna parte específica?