Reading the value properly will de-code the characters implicitly.
But: Your inner XML is not valid!:
DECLARE @xml XML=
'<Results>
<ResultSet fetchSize="128">
<Row rowNumber="1">
<CONFIGURATIONXML><ROOT></Device>[{"Name":"AL","Profile":{"ID":1,"Height":240},"Index":-1}]</ROOT></CONFIGURATIONXML>
</Row>
</ResultSet>
</Results>';
SELECT @xml
SELECT @xml.value('(/Results/ResultSet/Row/CONFIGURATIONXML)[1]','nvarchar(max)')
Leads to:
<ROOT></Device>[{"Name":"AL","Profile":{"ID":1,"Height":240},"Index":-1}]</ROOT>
As you can see, the </DEVICE>
is a closing tag, but there's no opening tag for this...
Don't know how this is created... If this is always the same, you could repair this like this:
SELECT CAST(REPLACE(@xml.value('(/Results/ResultSet/Row/CONFIGURATIONXML)[1]','nvarchar(max)'),'</Device>','') AS XML).value('/ROOT[1]','varchar(max)')
The result
[{"Name":"AL","Profile":{"ID":1,"Height":240},"Index":-1}]