В чём основное отличие этих способов ввода/вывода? Можно ли в C++ использовать спокойно функции scanf/printf или есть какие-то подводные камни?
scanf и printf это наследие C, они входят в стандартную библиотеку C, которая полностью поддерживается С++ (хотя сейчас эти языки расходятся). Потоки (cin и cout) это стандартная (и более новая) библиотека C++. Можно использовать любую библиотеку, или даже обе сразу. Однако как замечено в комментариях, для доступа к одному и тому же стандартному потоку (stdin/stdout) лучше использовать что-то одно, иначе могут быть проблемы с синхронизацией.
Хотя функции ввода/вывода C более старые, они помощнее, да и поудобнее. Так что в маленьких (особенно учебных) программах чаще используются потоки, а в больших коммерческих чаще можно видеть функции C. Это по личному впечатлению, конечно, вряд ли тут есть достоверная статистика.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости