First and last records in a string of linked rows
If you are using SQL 2012 as your tag indicates, then you can do this with a recursive CTE, although it's a little different since you find the child first and then the parents.  But Take a look at the sample below.

The Setup

DECLARE @Rentals TABLE
    (
    PK INT NOT NULL
    , CustID INT NOT NULL
    , ProdID INT NOT NULL
    , OverrideByPK INT NOT NULL
    , StartDate DATE NOT NULL
    , EndDate DATE NOT NULL
    );

INSERT INTO @Rentals
        ( PK
        , CustID
        , ProdID
        , OverrideByPK
        , StartDate
        , EndDate
        )
VALUES  ( 1,1,1,0,'1/1/2000','2/1/2000')      
    , ( 2,1,1,3,'1/2/2000','2/2/2000')      
    , ( 3,1,1,4,'3/2/2000','4/2/2000')      
    , ( 4,1,1,0,'4/2/2000','5/2/2000');


The Query

WITH CTE_Rentals AS
    (
    SELECT R.PK AS PK
        , R.OverrideByPK AS NextPK
        , R.PK AS OldestPK
    FROM @Rentals AS R
    WHERE R.OverrideByPK = 0
    UNION ALL
    SELECT R.PK AS LastPK
        , R.overrideByPK
        , CR.OldestPK
    FROM @Rentals AS R
        INNER JOIN CTE_Rentals AS CR ON R.OverrideByPK = CR.PK
    WHERE R.OverrideByPK &lt;&gt; 0
    )
, CTE_Single AS
    (
    SELECT C.OldestPK AS LastPK
        , MIN(C.PK) AS FirstPK
    FROM CTE_Rentals AS C
    GROUP BY C.OldestPK 
    )
SELECT S.FirstPK
    , FirstRental.CustID
    , FirstRental.ProdID
    , FirstRental.StartDate
    , LastRental.EndDate
FROM CTE_Single AS S
    INNER JOIN @Rentals AS FirstRental ON FirstRental.PK = S.FirstPK
    INNER JOIN @Rentals AS LastRental ON LastRental.PK = S.LastPK;