1. the auto_increment feature is not part of standard SQL
however, most database systems find it very useful, and have implemented something for it
MySQL: auto_increment
SQL Server: identity
Oracle: sequence
etc.
2. yes
3. yes, but if you use INTEGER then you will typically need to redesign your database long before you hit the limit
and if you use BIGINT, i guarantee you will never have too many rows
4. when you need a surrogate key -- i'm sorry if this is not a big explanation, so you should do some research on that term
5. it might mean you need to choose your modelling software with care