How large are the images you’re considering? For large images, we often recommend storing them separately. Here’s a blog post that goes into the considerations: https://blog.couchbase.com/large-objects-in-a-database/
Typically one of the key points with mobile is to give a good experience offline. So, you’ll need to think about the trade offs between pulling all the images down (presumably smaller ones) vs. not having them when network connectivity is poor. Otherwise, you would treat the retrieval and display just as you described with SQL.
Sync Gateway and channels are very powerful for what you want in terms of tasks. We have a To do list type example application that could help: https://github.com/couchbaselabs/mobile-training-todo/tree/feature/2.0 (make sure you’re looking at the feature/2.0 branch, not master, since the 2.0 API has changed significantly).
Channels will do just as you suggest. There’s a lot of flexibility. You could, for example, have two fields in your document, say “owner” and “assigned”. Have each user have a channel. In the sync function, check the owner and assigned fields and assign the document to a user’s channel if they’re listed in either. The easiest is to have everything based off a consistent ID. So the user logs in under that id, it’s used as the channel name, and used in the owner/assigned fields.
The sync function can also be used for validation. Let’s say you want an owner to be able to change anything, but someone to whom the task is assigned to only change a progress field. You would, of course, typically build that into the application itself. But you can also have the sync function reject a document based on the authenticated user at the time of the sync, the previous version of the document, and the new version being presented.
With channels, the on-device database will only see the documents a user has access to, so you won’t be downloading the complete set of images to every device.