Pivot three fields into one category
Will this work for you?  It's not dynamic as you need to know what the skills are ahead of time, but it gets the job done.  I've added another skill to show you how to do that.  You only need to change it in one place.  

DECLARE @Table TABLE
    (
      Skill VARCHAR(10) NOT NULL
    , MinValue INT NOT NULL
    , IdealValue INT NOT NULL
    , MaxValue INT NOT NULL
    );

INSERT  INTO @Table
        ( Skill, MinValue, IdealValue, MaxValue )
VALUES  ( 'C++', 0, 1, 1 )
        , ( 'VB', 1, 1, 1 );


SELECT  *
FROM    @Table;

WITH    CTE_Table
          AS ( SELECT   T.Skill
                      , T.MinValue AS Value
                      , 'Min' AS ValueType
               FROM     @Table T
               UNION ALL
               SELECT   T.Skill
                      , T.IdealValue AS Value
                      , 'Ideal' AS ValueType
               FROM     @Table T
               UNION ALL
               SELECT   T.Skill
                      , T.MaxValue AS Value
                      , 'Max' AS ValueType
               FROM     @Table T
             )
    SELECT  *
    FROM    CTE_Table AS C 
          PIVOT ( SUM(Value) FOR Skill IN ( [C++], [VB] ) ) AS P
    ORDER BY CASE WHEN ValueType = 'Min' THEN 1
                  WHEN ValueType = 'Ideal' THEN 2
                  WHEN ValueType = 'Max' THEN 3
                  ELSE 3
             END;


Or, using UNPIVOT:

SELECT
    Criteria = P.Name,
    P.[C++],
    P.VB
FROM @Table AS T
UNPIVOT (value FOR name IN (MinValue, IdealValue, MaxValue)) AS U
PIVOT (MAX(Value) FOR Skill IN ([C++], [VB])) AS P;


To make the query dynamic, see this Stack Overflow question and:

Dynamic pivot: sum of sales per month