3番目のケースは、VARCHARを予期していて、INTを指定しているため、エラーが返されます。変更点は、0を「0」に置き換えたことです。これを試してください:
SELECT supplier_Name,supplier_Address,supplier_reference,contact_Number1,contact_number2, contact_number3,
(case
when contact_number2 is null then contact_number3
when contact_number3 is null then contact_number2
when contact_number3 is null and contact_number2 is null then '0'
when contact_number2 is not null and contact_number3 is not null then CONCAT(CONCAT(contact_number2,','), contact_number3)
end)
as contact