
In apex, By default scheduled job run in every 1 hour using CRON expression but you can scheduled this job in every 5 minutes or 10 minutes duration.

Batch apex is used to process the large no of data in Asynchronous mode.( Runs when the resources are free )
With the help of batch apex we can process upto 50 million records.
We prefer to use the batch apex when we have large set of data and we wanted to perform/execute certain logic on the scheduled basis.