This also confused me, because they are quite similar. But if you want to select records in a related table, domain is much easier to use (especially in Studio).
Instead, Context is used to add other functionality, such as passing a default value, so if a record is created in a related table it will have the correct value. So, for example, this would default the project_id.
{'default_project_id': project_id}"
Another user of context is to specify the Filter to be used when displaying records from a related table (though this is not usually necessary because the domain will also limit what is displayed).
It's also used with buttons, but that can't currently be handled by Studio.
Context is also used in Windows Actions to set defaults (for example, if you create a contact from the Customers menu, the contact will be a customer). You can see this by looking at the Windows Actions on the Technical Settings menu.
Here is some more information on Context
How to to use context: http://learnopenerp.blogspot.com/2018/01/get-parent-form-value-in-one2many-form.html