First you need a better understanding of how the search works. It takes the query and converts it to a location, or coordinates based on the terms. Then they system searches from that center point up to the radius as defined on the search form.
1. So the the issue with your CA results is that CA or California will result in searching from the geographical center of CA, up to the radius (currently defaulted to 25 miles). This wont cover it. Try a more specific search like 90703. Same as Texas, etc.
2. This is again because the system is attempting to convert that zipcode to a location. If you searched '08010, Spain" for instance it works. Luckily, google will bias the results based on the users physical location, so if a user in Spain searches for 08010 it should hopefully return Barcelona. Alternately you can specify that people include their country when searching.