How to handle a many to many relationship with varying number of columns needed?
The preferred method is to use an intermediate table to just intersect friends and hikes.  Then join through that table to list off friends who have gone on which hikes.  

I've included a sample below as well as a sample query that shows each hike and the friends that have gone on that with you.  

CREATE TABLE dbo.Hikes
    (
    HikeID INT NOT NULL PRIMARY KEY IDENTITY(1,1)
    , LocationID INT NOT NULL
    , Summit NVARCHAR(100) NULL
    , DateStart DATETIME2 NOT NULL
    , DateEnd DATETIME2 NOT NULL
    )

CREATE TABLE dbo.Friend
    (
    FriendID INT NOT NULL PRIMARY KEY IDENTITY(1,1)
    , FullName NVARCHAR(100) NULL
    , IsRealFriend BIT NULL DEFAULT 0
    )

CREATE TABLE dbo.HikeFriend
    (
    HikeFriendID INT NOT NULL PRIMARY KEY IDENTITY(1,1)
    , HikeID INT NOT NULL REFERENCES dbo.Hikes (HikeID)
    , FriendID INT NOT NULL REFERENCES dbo.Friend (FriendID)
    )

CREATE UNIQUE INDEX IDXU_HikeFriend ON dbo.HikeFriend (HikeID, FriendID)

--Sample Query
SELECT H.LocationID
    , H.Summit
    , H.DateStart
    , H.DateEnd
    , F.FullName
FROM dbo.Hikes AS H
    LEFT OUTER JOIN dbo.HikeFriend AS HF ON HF.HikeID = H.HikeID
    LEFT OUTER JOIN dbo.Friend AS F ON F.FriendID = HF.FriendID
WHERE H.Summit = 'Kilimanjaro'