select c.* from content c
join content_share_wide csw on csw.content_id = c.id
where csw.type = 1
union
select c.* from content c
join content_share_wide csw on csw.content_id = c.id
join user_friend uf on c.user_id = uf.user_id
where csw.type = 2 and uf.friend_user_id = ?
union
select c.* from content c
join content_share_user csu on csu.content_id = c.id
where csu.user_id = ?
Пагинация вполне обычная — N штука на страницу. Если всё уложится в качественный запрос, то будет через limit offset конечно.