Olá Luiz,
quando temos tipos valores com int, long,DateTime... esses campos não podem ser nulos correto ?
Quando se declara uma variavel com o "?" diz que ela é do tipo Nullable ou seja esse campo permite nulo veja um exemplo :
int valor = null; //erro tempo compilacao
int? valor = null; //ok tipo nullable
Veja a diferença, fora outras propriedades no tipo Nullable como "HasValue", "Value", mas seria bom dar uma olhada na documentação :
Tipos Nullable C#