Is there a way to have a scheduled task that will run later if MacOSX is asleep / off at the expected runtime?

There are various mechanisms in Mac OS X to do scheduled tasks. They take a little bit of effort to configure, but this page (formerly elsewhere) explains it and has links to more info. The at service, which was a bit easier to use, is deprecated as it wastes battery, and is no longer enabled by default.

The main recommendation now is to create a launchd plist, although cron is still supported.