You need to escape all LIKE characters first and use ESCAPE operator. Also, your conversion of ColumnB to VARCHAR is by default only VARCHAR(30) so data in ColumnB was being truncated and not matching since, by itself, @param2 is 35 characters unescaped.
See below:
DECLARE @param1 INT, @param2 NVARCHAR(MAX);
SET @param1 = 1
SET @param2 = '[Test_data_forQry],[Next_Test_Data]'
-- Replace LIKE special characters
SET @param2 = REPLACE(REPLACE(REPLACE(REPLACE(@param2, '[', '|['), ']', '|]'), '%', '|%'), '_', '|_')
SELECT *
FROM Table1
WHERE
ColumnA = @param1
AND CONVERT(NVARCHAR(MAX), ColumnB) LIKE ('%,' + @param2 +',%') ESCAPE '|';
Edit: if your ColumnB data does have example data like '[Test_data_forQry]' that you indicated in one of you comments, then leave it switched around like so and escape ColumnB instead of @param2:
DECLARE @param1 INT, @param2 NVARCHAR(MAX);
SET @param1 = 1
SET @param2 = '[Test_data_forQry],[Next_Test_Data]'
SELECT *
FROM Table1
WHERE
ColumnA = @param1
AND @param2 LIKE '%' + REPLACE(REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(MAX), ColumnB), '[', '|['), ']', '|]'), '%', '|%'), '_', '|_') + '%' ESCAPE '|';
Not great for performance likely with so much happening in the where, but this will match a row with ColumnA = 1 and ColumnB = '[Test_data_forQry]'.
Update:
Updated to split the search string on commas (will likely need to create a function from here first):
DECLARE @param1 INT, @param2 NVARCHAR(MAX);
SET @param1 = 1
SET @param2 = '[Test_data_forQry],[Next_Test_Data]'
-- Replace LIKE special characters
SET @param2 = REPLACE(REPLACE(REPLACE(REPLACE(@param2, '[', '|['), ']', '|]'), '%', '|%'), '_', '|_')
SELECT DISTINCT t.*
FROM Table1 t
INNER JOIN dbo.split(@param2, ',') split ON 1=1
WHERE
t.ColumnA = @param1
AND CONVERT(NVARCHAR(MAX), t.ColumnB) LIKE ('%' + split.s + '%') ESCAPE '|';