By default, PostgreSQL executes transactions in "autocommit" mode, that is, each statement is executed in its own transaction and a commit is implicitly performed at the end of the statement (if execution was successful, otherwise a rollback is done). BEGIN initiates a transaction block, that is, all statements after BEGIN command will be executed in a single transaction until an explicit COMMIT or ROLLBACK. Statements are executed more quickly in a transaction block, because transaction start/commit requires significant CPU and disk activity. Execution of multiple statements inside a transaction is also useful to ensure consistency when changing several related tables: other sessions will be unable to see the intermediate states wherein not all the related updates have been done.
This signifies that a new transaction has been started.
This indicates that a transaction was already in progress. The current transaction is not affected.
BEGIN is a PostgreSQL language extension. There is no explicit BEGIN command in the SQL standard; transaction initiation is always implicit and it terminates either with a COMMIT or ROLLBACK statement.
Other relational database systems may offer an autocommit feature as a convenience.
Incidentally, the BEGIN key word is used for a different purpose in embedded SQL. You are advised to be careful about the transaction semantics when porting database applications.