Hola, sobre la segunda duda lo puedes hacer asi:
Código Delphi
[-]DBGrid1.Columna[1].enabled := False;
o
DBGrid1.Columns[1].ReadOnly := True;
Sobre la primera duda debes jugar con los eventos onColEnter, OnColExit y OnDrawColumnCell.
Espero te sirva.
Saludos.