1. PL/SQL blocks allow declaring variables, cursors, and exceptions before executing SQL and PL/SQL statements. Variables can be scalar, composite like records, or reference types like cursors.
2. Procedures and functions are created using CREATE OR REPLACE and can contain PL/SQL blocks.
3. Records are used to store multiple fields of different types, like table rows. PL/SQL tables allow storing multiple values of the same type in an indexed collection.
4. Variables can be accessed in nested blocks, with outer variables referenced explicitly.