le operazioni, se non è necessario altrimenti, vanno fatte su uno unix timestamp altrimenti diventa MOLTO più complicato gestire correttamente tutte le situazioni

per avere un arrotondamento al 15° minuto conviene fare qualcosa del genere

codice:
$minutes = (int)(time() / 60);
$needToRound = ($minutes % 15) > 0 ?  15 - ($minutes % 15) : 0;
$timestampRounded = ($minutes + $needToRound) * 60;

echo date('d/m/Y H:i:s', $timestampRounded);
Questo codice non tiene conto dei secondi (come fa attualmente il tuo) nel senso che se sono le 14:30:05 verrà sempre arrotondato alle 14:30:00

Altrimenti, per tenere conto anche dei secondi

codice:
$timestamp = time();
$needToRound = ($timestamp % (15*60)) > 0 ?  (15*60) - ($timestamp % (15*60)) : 0;
$timestampRounded = $timestamp + $needToRound;

echo date('d/m/Y H:i:s', $timestampRounded);
Ho fatto qualche test è sembra comportarsi correttamente