By default it does deferred transactions (exclusive lock is only acquired when you need to commit), but if you use insert/update/delete outside a transaction, each statement is it's own transaction.
Locking is database-wide, although IIRC there's some branch that can do table-level locking.
As far as I know, SQLite's version of "table-level locking" is to put each table in a different database file and ATTACH them all to one database connection.
Locking is database-wide, although IIRC there's some branch that can do table-level locking.