Die untere Funktion gibt keinen Boolean zurück. Sondern entweder einen String ($conditional) oder null.
Ich würde erstmal sicherstellen, dass die untere Funktion wirklich korrekt ist. Für mich sieht das aktuell nicht so aus. Ich verstehe auch nicht, wie sie true zurückgeben soll, wenn dein Rückgabewert ein String ist. Das was du willst bzw. beschreibst, würde dann stimmen, wenn dein Rückgabewert $logic wäre. Aber du gibst ja $conditional zurück. Und selbst dann würde ich lieber ein zusätzliches else ergänzen und wirklich false zurückgeben. True oder Null ist irgendwie ... Naja.
Ansonsten kann man das generell schon mit eval() machen. Dann sollte man nur sicher stellen, dass $conditional nur die Conditional Tags enthalten darf. Wenn $conditional etwas anderes enthält, sollte man die Ausführung sicherheitshalber abbrechen.
Ich persönlich würde den User Optionen (z.B. in Form von Checkboxen) zur Verfügung stellen, wo ich die möglichen Bedingungen vorgeben und dann die Conditional Tags im PHP Code prüfen. So kann der User keinen "Quatsch" eingeben und ich bin sicher, dass ich alle Fälle auch sauber prüfen kann. Zudem halte ich die Usability für besser.