I've tried this approach. It's a fast way to do this, compared to the usual way, but it has limitations.
The usual way
The traditional way to do this is a spatial join. You read off the county name attribute of the first polygon you find which the point overlaps.
The quickest way is to import these polygons into Postgres with
shp2pgsql and do something like this (assuming you imported in WGS84). I've not tested this.
ST_Intersects(counties.geom, ST_MakePoint(longitude, latitude)) AND
counties.geom && ST_MakePoint(longitude, latitude)
(the last line speeds things up by only examining counties whose bounding boxes contain the point)
Your idea about building this with rasters is something I've done in the past using Python and GDAL. This involves converting the polygons to a raster (in your example, each pixel would be 50m x 50m). In QGIS this is under Raster > Conversion > Polygon to Raster. You'd need to allocate a unique integer to each county first, which would become the value of the raster in each cell.
Doing spatial joins of large numbers of polygons and points can be prohibitively slow, but GDAL can find the pixel corresponding to a geographical location really quickly, and sampling the raster at that point is really quick too.
I found using this technique let me spatially join 1 million points to several hundred polygons in a couple of minutes, something which took 12 hours using a normal spatial join in QGIS. (I didn't compare it to the postgresql approach, so I'm not sure how it compares)
The downside is a lack of accuracy and incorrect classifications.
Spatially joining a point to a polygon will give correct results. Doing it with a raster means that some points may be mis-allocated to a neighbouring county if it is close enough to the boundary. But you have the same problem if you simplify the polygon geometries to speed up the normal spatial join.
Having said that, a 50m resolution grid over the US will probably need a huge amount of memory.
It's a trade-off; speed versus accuracy. Choose one :)