azsx писал(а):1. Я не умею нормально программировать многопоточные приложения.

многопоточность имеет весьма условное отношение к сервисам/демонам.
Скажу больше, что скорей всего, многопоточность тебе будет вредна, вместо неё тебе нужно использовать многопроцессность

Разницы между консольными и сервисами, с точки зрения разработчика -
нет.
Подразумевается, что консольные программы, могут требовать от пользователя ввод некой информации (чего сервис себе позволить не может). Но считается правильным, что консольная программа, должна исполняться и без участия пользователя.
(Например: в svn-е есть режим "не-интерактив", в котором SVN не будет запрашивать от пользователя подтверждения тех или иных действий, или требовать пароль).
По сути - любая консольная программа должна уметь быть сервисом.
Например - Apache сервер (httpd) - его можно запустить как консольную программу. А можно запустить как и сервис (причём тот же исполняемый файл).
Нужно заметить, что хорошо написанный сервис, должен уметь работать и как консольная программа (даже если он не будет использоваться как консольная). Просто с точки зрения удобства отладки!
Разница между консольнями и сервисами, всплывает на уровне администирования. Где сервисы запускаются системой и обычно имеют права, выше чем простой смертный пользователь, который запустит консольную программу.