Vue.js は、画面を「コンポーネント」という部品の組み合わせで作る JavaScript のフレームワークです。データの変化に応じて表示を自動で更新する「リアクティブ」な仕組みを持っているため、入力や操作に応じて動く画面を作るときも、表示を書き換える処理を自分で書く必要がありません。
Vue.js では、HTML・JavaScript・CSS を1つの .vue ファイルにまとめてコンポーネントを書きます。テンプレートは HTML に近い書き方なので、HTML/CSS に慣れていれば読みやすいのが特徴です。属性の値の埋め込み、イベント処理、条件分岐、繰り返しは、v-bind / v-on / v-if / v-for といったディレクティブを使って、HTML の属性のように書けます。
Nuxt は Vue.js をベースにしたフレームワークです。pages ディレクトリにファイルを置くだけでページが作れるルーティングや、レイアウト、ページタイトルの設定など、Web サイトや Web アプリを作るための仕組みが標準で用意されています。
1ページだけのサイトやアプリなら Vue.js だけでも作れますが、複数ページを持つサイトでは、ページごとの URL の管理や共通のレイアウト、ページ間でのデータの共有が必要になります。Nuxt を使えば、こうした仕組みを自分で一から用意する必要がありません。