Impulsdauer / Impulszähler / Frequenzanzeige - Umsetzungsmöglichkeit fehlt.

ist ein möglich in einem Interrupt mit millis() zu arbeiten? Meinte irgendwo zu lesen dass man es nicht machen sollte.

Geht.
Du kannst nur nicht erwarten, dass millis() sich jemals ändert, solange du in der ISR bist.

Nicht so:

void MyIRHandler() {
   unsigned long now = millis();
   while ( millis() == now ) {} // wait for the next millisecond
   // kommt hier nicht hin und loop() steht auch
}

ich belege 2 Interrupt Pins mit dem selben signal

Nicht nötig. attachInterrupt(0, MyHandler, CHANGE); ist genau dafür gemacht.
Innerhalb MyHandler kannst du dann mit if / else beide Fälle abhandeln.

In loop solltest du allerdings während des Zugriffs auf time die Interrups zumachen, da sich sonst während des Bearbeitens einzelne bytes ändern können und loop() dann weder mit dem alten, noch dem neuen Wert arbeitet.
Du hast dann die Wahl, unter geschlossenem Interrupt entweder deine float-Berechnung zu machen oder erstmal nur in eine andere lokale unsigned long Variable umkopieren.