How to list nodes that share only the first selected value in an entity reference field?
You should be able to set up something like what you are after with the following steps:


Create a view of content (nodes)
Add a contextual filter for NID with a that gets it's default value from "Content ID from url" (presuming the related products are to appear on the original products own page).
Add a relationship on field_category, call it something like "category", require this relationship
Add a filter of field_category:delta, value = 0
Add a relationship of "Content using field_category", require this relationship, use relationship: category, call this relationship something like "related"
Add another contextual filter that's also for NID with a that gets it's default value from "Content ID from url", use relationship: related, tick "Exclude" in the "More" fieldset at the bottom.
Now when you add your fields use relationship: related.