My suspicion is that the calculation is being done using integers but try this
void setup()
{
Serial.begin(115200);
byte start = 253;
byte mil = 253;
byte period = 3;
mil++; // 254
mil++; // 255
mil++; // 0
mil++; // 1
mil++; // 2
Serial.println(mil); // prints 2
Serial.println(mil - start); // prints -251
if ((byte)(mil - start) >= period)
{
Serial.println("Time passed");
}
}
void loop()
{
}