Try this:
Overview::query()
->selectRaw(\DB::raw('sum(case when week(created_at) = week(now()) then total_users end) as this_week, sum(case when week(created_at) = week(now()) - 1 then total_users end) as last_week, sum(case when week(created_at) = week(now()) then total_users end) - sum(case when week(created_at) = week(now()) - 1 then total_users end) as difference'))
->whereRaw('created_at >= date_sub(now(), interval 2 week)')
->first();
raw query, but it does the job in one query instead of doing multiple queries. You might need to reverse the cases for the difference, but at least try it out if it works :)
Another option is just to fetch the data for the last two weeks and calculate it in memory:
$lastWeek = Overview::whereBetween('created_at', [now()->subWeeks(2), now()->subWeek()])->sum('total_users');
$thisWeek = Overview::whereBetween('created_at', [now()->subWeek(), now()])->sum('total_users');
$result = $lastWeek - $thisWeek;