This is an extraordinarily common pattern in web applications. My Rails apps do it hundreds of thousands of times per day, often to avoid hitting an external API during a request/response cycle. (I use Delayed::Job. This would not be my #1 recommendation for this pattern in 2014. Take a look at Sidekiq, Resque, or this new thing instead.)
If you ever wanted to upgrade form delayed job, this could come in handy for you.
Often, there are certain activities you might want to do in a way that doesn't block the request/response cycle, but still have them performed as soon as possible. For example, a user buys a widget on your site - send a receipt email. You don't want the "Thanks for buying" success page response to wait for your servers to compose & send the email, so you offload the email to your queue system.
For instance:
* Use cron to dump a database backup nightly
* Use some job system to send a user an email after they sign up
There's a lot of overlap, and if used cleverly (which may not be smart), they can both achieve the same goals.
Background jobs takes that 1000 deliveries job and puts it into the background queue, then a worker starts sending those emails right away. Meanwhile your app returns from your request instantly so you can continue doing what you were doing while the job is executed in the background.
Cron is a POSIX task scheduler, this is a Ruby normalized API for background job systems.