Why is the second here unsolvable?
Because CONVERT is a function with two parameters.
Why in the third gives the value of eight sixes after zero?
Eight digits after the decimal point is the representation of DECIMAL(20,8) , resulting from the division of DECIMAL(18,6) and the whole.
Compare
SELECT CONVERT(DECIMAL(18,6), 2.0/3); -> 0.666666
and
SELECT CONVERT(DECIMAL(18,6),2)/3 as Value, SQL_VARIANT_PROPERTY(CONVERT(DECIMAL(18,6),2)/3, 'BaseType') as Type, SQL_VARIANT_PROPERTY(CONVERT(DECIMAL(18,6),2)/3, 'Precision') as Precision, SQL_VARIANT_PROPERTY(CONVERT(DECIMAL(18,6),2)/3, 'Scale') as Scale; -> 0.66666666 decimal 20 8