How can I get a list of all objects named 'foo*'?
If you want to use shell style globbing (*.foo, *.*abc, [ab]*.bar) (as is used in the question), you can use fnmatch, either fnmatch.fnmatchcase or fnmatch.fnmatch for case insensitive matches.

import bpy
import fnmatch

scene = bpy.context.scene

foo_objs = [obj for obj in scene.objects if fnmatch.fnmatchcase(obj.name, "foo*")]


Otherwise you can simply do...

foo_objs = [obj for obj in scene.objects if obj.name.startswith("foo")]


For more powerful pattern matching: check on Python's built-in regular expression (re module)