1) not that's easy, as far as I know...
2) Assuming you have a table with one record for each state, do it this way: Define a relationship linking your layout's table to the states table by the state name field. Then, put the state abbreviation field from the state names table on top of your drop down list. Give it an opaque fill color and use field behavior on the inspector's data tab to deny access to this field when in browse mode.
Now, when you click on this field, the drop down list behind it deploys. When you select a state, the drop down list disappears back behind the field and the abbreviation field from the related state names table shows the abbreviation for the selected state.
1) revisiting that 1. I just downloaded my copy of version 12 an hour or so ago. I may change my answer after further research as I seem to recall a new feature in 12 that may be able to download data from a web site automatically--which would might be a way to update your zipcode table.