Can I compress two rows with a difference in two columns into a single row with both columns?
Do I understand correctly and you need something like:

SELECT prod1.prod_id, 
       link1.prod_link_disabled, 
       loc1.location_id AS src_location_id, 
       loc1.location_id AS dst_location_id, 
       loc1.customer_id, 
       cust1.customer_name
  FROM product AS prod1 
  JOIN product_link AS link1 ON link1.prod_id = prod1.prod_id
  JOIN region AS region1 ON region1.region_id = link1.region_id
  JOIN location AS loc1 ON loc1.loc_id = region1.loc_id
  JOIN customer AS cust1 ON cust1.customer_id = loc1.customer_id
  JOIN product AS prod2 ON prod2.prod_id = prod1.prod_id
  JOIN product_link AS link2 ON link2.prod_id = prod2.prod_id
  JOIN region AS region2 ON region2.region_id = link2.region_id
  JOIN location AS loc2 ON loc2.loc_id = region2.loc_id
  JOIN customer AS cust2 ON cust2.customer_id = loc2.customer_id
 WHERE prod1.is_source AND
       NOT link1.prod_link_deleted AND
       NOT prod2.is_source AND
       NOT link2.prod_link_deleted AND
       prod1.prod_id = 5874;


Sure, you can remove excessive JOINs.