You are going to have to use a pivot table to do this. If the number of values for Name are unknown, you will also need to use some dynamic sql. 3 Articles you will probably find useful for this are:
Pivot Tables
SQL Server Cursors
Dynamic Sql
EDIT:
Here is a possible example
--Get the list of names
DECLARE @values varchar(MAX);
SELECT @values = COALESCE(@values, '') + '[' + Name + '],' FROM table;
SET @values = SUBSTRING(@values, 1, LEN(@values) - 1);
--build the sql string using these names
DECLARE @sql varchar(MAX) = 'SELECT applicationName, ' + @values + 'FROM (';
SET @sql = @sql + 'SELECT applicationName, Name, Value FROM tableName WHERE CreatedOn = (SELECT MAX(CreatedOn) FROM tableName WHERE ApplicationName = @appName) AND applicationName = @appName) AS toPivot';
SET @sql = @sql + 'PIVOT (';
SET @sql = @sql + 'MAX(Value) FOR Name IN (' + @values + ')) As p';
--run sql
DECLARE @ParamDefinition varchar(MAX) = '@appName varchar(MAX)';
DECLARE @selectedApp varchar(MAX) = 'put the app you want here';
EXECUTE sp_executesql @sql, @ParamDefinition, @appName = @selectedApp;
Note that I am assuming that the CreatedOn value will be the same for every Name you are interested in for an application.
Edit again:
The solution below mine has a really nice trick for working out the most recent date for each entry if they are different.
DISCLAIMER, since I did this in the answer window off the top of my head, it may not be 100% right, but it should get you pretty close.