I would like to create a visualization on the web similar to the following: http://namemapper.babynamewizard.com/namemapper/
Are there any good libraries for doing this? Is OpenLayers light-weight enough to handle many maps at once?
Actually, you don't need OpenLayers - or any other library - for the small maps (like the ones on the top of your example). They are purely static (no panning/zooming/etc) and thus can be simple images displaying the response of a mapserver of your choice.
OpenLayers can be used for many static maps; I have in the past created up to 200 maps on a single page without a huge performance penalty, so long as they are simple maps. Many sites have used small, static OpenLayers maps to create simple maps, because then they can use the same set of image tiles that they use for many other maps on their sites.
When using OpenLayers like this, I recommend using a limited number of layers and controls, as well as options like "buffer:0" to limit the number of tiles loaded. Your goal should be to minimize the number of DOM elements that OpenLayers creates, since that will be the major performance bottleneck for the loading of your page or application.
For applications where you are not pre-caching all of your tile data, or not working with vector data, using a single image request to a map server of some kind may be a better choice. If you're working with tiled data, or want to use vector data rendered by the client, OpenLayers is a reasonable option to solve the use case.
HTML can be used to create simple static maps without any server side stuff like a WMS or client-side libraries like OpenLayers. Use a raster image of the map area in combination with the HMTL's tags map and area, the last one with the attribute shape set to 'poly'. You would have to give border's map coords relative to the top, left corner of the map object. Besides, events like onmouseover or onclick are supported.
EDITED ON 2010-09-26 01:25 CET: An example of HTML image map can be found at 'iCITA: Image Map Example'