Не хватает тегов в вопросе. Это относится к конкретному языку программирования. Например в С++ шаблон такой. В Rust - другой. В golang - третий.
Обычно консольное приложение - не создает окон. Обычно оно в себя включает обработку консольных аргументов. Например если юзер печатает "--help" вторым аргументом - то приложение печатает справку по командам. И обычно (99%) приложение оперирует потоком вывода (STDOUT) для облегчения взаимодействия с другими CLI приложениями.
Например когда вы делаете cat (concatenate)
$ cat file1.txt file2.txt > union.txt
и "птичкой вправо" выводите сцепление двух файлов в новый файл.
Еще приложение может в качестве input читать STDIN и еще может в случае ошибки возвращать
ненулевые коды возврата. Это - полезно чтобы CLI приложение интегрировать с bash скриптами
и проверять был ли успешен последний вызов.