Can wp_schedule_single_event be used to run background proccess?

If by “run into trouble” you mean that you are getting server or browser timeouts, I’d expect the same trouble with wp_schedule_single_event, since it is just going to run your function at some other time.

I would consider using wp_schedule_event to break the work up into chunks– say, process 500 (of your 4000 likes) every half-hour or every hour. I suppose you could do the same with wp_schedule_single_event by scheduling multiple single events but I am not sure why you would prefer that over wp_schedule_event.

Neither of those will strictly be “background” processes, though, by which I think you mean something like this.

I should also note that most of the hosts I’ve seen do not allow the kind of mass volume email that you are sending. I’d check the TOS if you haven’t already.