As said, square brackets allow you to use a name (for methods, variables, properties, etc) that is usually reserved for keywords. Other examples are Public, Private, Class, Sub, etc.

As for your second point, the c indicates that it is a character literal and not a string literal of length 1. Even though a character and a 1-letter string are in all usual senses the same, in .NET they are simply two different classes. I would like to correct aashish_9601's answer though: there is no conversion taking place.
Code:
Dim a = "x"
Dim b = "x"c
In this code, a is a String and b is a Char.
The C# equivalent would be
Code:
var a = "x";
var b = 'x';
Since ' is reserved for comments in VB they had to find a different way to distinguish string and char literals, and they chose for a 'c' suffix.