Your machine multiplied 5 by 60 to get 300, and then attached that 300 to the end of your time String "14:59:25" to get the result "14:59:25300".
That's what happens if you try adding a number to a String. (Really, what did you expect to happen?)
I'm probably going to get some virtual tomatoes thrown at me for posting this, but here goes:
String formattedTime = timeClient.getFormattedTime();
Serial.print("Formatted Time: ");
Serial.println(formattedTime);
// create a string to hold the new time
String newTime;
// copy the old formatted time into the new time
newTime = formattedTime;
// make sure our string is long enough
// 01234567
// "HH:MM:SS"
if ((newTime.length())>=8) {
// advance the time 5 minutes
newTime[4] += 5;
// do carries
if (newTime[4] > '9') { newTime[4] -= 10; newTime[3]++; }
if (newTime[3] > '5') { newTime[3] -= 6; newTime[1]++; }
if (newTime[1] > '9') { newTime[1] -= 10; newTime[0]++; }
if ((newTime[0] >= '2') && (newTime[1] >= '4')) {
newTime[0] -= 2; newTime[1] -= 4;
}
else if (newTime[0] >= '3') {
newTime[0] -= 3; newTime[1] += 6;
}
}
// now we have the new time, so let's print it
Serial.print("Next 5 min: ");
Serial.println(newTime); // Calculate next 5 min
This example shows how to add a period to the current time. The addition could, of course, be done at any time and later compared to the actual time at that point
In addition to all info already provided, external libraries to handle NTP time are completely useless with ESP8266. There is everything you need already included in the Arduino core.