TTS and uploading a file are optional for a prompt, you just have to specify at least one before you can use it in a flow. At runtime if a recording exists it will be played, otherwise the TTS will be used.
The tts and text fields are to differentiate between what is spoken versus what is displayed as text (like in a message flow). Sometimes you want them to be different, for example say "ABC incorporated" but display "ABC Inc." in chat. You may also need to use a phonetic spelling to get your TTS engine to pronounce something the way you want it to sound.