Using a join operation with conditionals
You can make use of the FOR XML PATH() construct to create the list of features.

For instance:

USE tempdb;

IF OBJECT_ID('dbo.Features') IS NOT NULL
DROP TABLE dbo.Features;
IF OBJECT_ID('dbo.Versions') IS NOT NULL
DROP TABLE dbo.Versions;
GO
CREATE TABLE dbo.Versions
(
    VersionID INT NOT NULL
        PRIMARY KEY CLUSTERED
        IDENTITY(1,1)
    , VersionNumber DECIMAL(10,2) NOT NULL
    , StartDate DATETIME NOT NULL
    , EndDate DATETIME NULL
    , ServerID INT NOT NULL
);
CREATE TABLE dbo.Features
(
    FeatureID INT NOT NULL
        PRIMARY KEY CLUSTERED
        IDENTITY(1,1)
    , FeatureInfo VARCHAR(250) NOT NULL 
    , VersionID INT NOT NULL
        FOREIGN KEY REFERENCES dbo.Versions(VersionID)
);

INSERT INTO dbo.Versions(VersionNumber, StartDate, EndDate, ServerID)
VALUES (1.0,'2016-03-22T00:00:00', '2016-03-23T00:00:00', 1001)
    , (2.0,'2016-03-23T00:00:00', '2016-03-24T00:00:00', 1001)
    , (2.1,'2016-03-24T00:00:00', NULL, 1001);

INSERT INTO dbo.Features (FeatureInfo, VersionID)
VALUES ('blah', 1)
    , ('blee', 1)
    , ('bloh', 2);

;WITH Deets
AS
(
    SELECT VersionNumber = CONVERT(VARCHAR(10), v.VersionNumber, 0)
        , Features = STUFF((SELECT TOP(2147483647) ', ' + f.FeatureInfo
        FROM dbo.Features f
        WHERE f.VersionID = v.VersionID
        ORDER BY f.FeatureID
        FOR XML PATH ('')
        ), 1,2,'')
    FROM dbo.Versions v
)
SELECT 'Version ' + d.VersionNumber + ' has ' + 
    CASE WHEN d.Features IS NULL THEN 'no features' 
        ELSE d.Features 
    END
FROM Deets d;


This returns a nice list, like:



Notice several things from my code above:


I always specify the schema
I use upper case for the SQL keywords
I use Camel Case for column names
The values I specified for the date columns are in ISO format, which makes it easier for SQL Server to understand, and prevents errors.