Node.js это платформа, соединяющая в себе несколько технологий.
Выполнение с использованием движка хромиум V8.
Обработка цикла событий реализована с помощью LibUV.
Стандартные библиотеки node.js реализованы на СИ и обеспечивают взаимодействие с операционной системой, файловой системой, сетью, вводом выводом и тп.
NPM пакетный менеджер (по сути репозиторий внешних модулей для js), поставляется так же с пакетом Node.js и предоставляет возможность использовать модули, там опубликованные другими авторами.
Node.js - это однопоточная асинхонная среда исполнения, перед началом программирования на js желательно плотно почитать документацию по самому js, далее документацию по nodejs
https://nodejs.org/
Node.js на первый взгляд выглядит быстрым входом в написание серверного кода или серверных исполняемых скриптов, однако, эта доступность является достаточно сильным минусом, потому что позволяет тем, кто не удосужился изучить ее поглубже творить архитектурных инвалидов, что рано или поздно приводит к тому, что такие проекты выглядят плохо.
Отдельно, про программирование под устройства, node.js не компилирует свой код, а потому на любом устройстве у тебя будет набор твоих файлов плюс все пакеты из node_modules, которые ты наустанавливаешь. Естественно у тебя на любом устройстве должен быть уже node.js или должна быть возможность туда его установить.
Из явных плюсов, писать бек и фронт на одном языке, достаточно зрелое комьюнити и много пакетов, доступных в npm, для решения многих задач.
Из явных минусов, из-за недостаточного знания js и понимания работы цикла событий люди очень часто пишут ужасный код, который получается очень сложным.