Использование $_POST['task'] без проверки на isset() — грубейшая ошибка. Это вызовет Undefined array key, если форма отправлена пустой. Добавь:
if (!isset($_POST['task'])) { header('Location: /'); exit; }
PDO без обработки ошибок — бесполезен. Любая ошибка БД останется незамеченной. Исправь подключение:
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Также header('Location') не прерывает выполнение скрипта. Код продолжит работать, что может привести к побочным эффектам. Всегда добавляй exit(); после перенаправлений.
Если таблица не создана, запрос INSERT завершится ошибкой. Проверь структуру БД:
CREATE TABLE tasks (id INT AUTO_INCREMENT PRIMARY KEY, task TEXT NOT NULL);
Насчёт выскакивающей ошибки.
Ошибка 1045 указывает на неверные учётные данные для подключения к MySQL.