components.json records the aliases for components, utils, ui, lib and hooks, plus the style, the Tailwind CSS entry file, the base colour, whether CSS variables are used, the rsc flag and the icon library. The CLI resolves those aliases to real directories when it writes files.
If an alias like @/components has no matching entry in tsconfig paths, or the paths point somewhere else, the generated imports do not resolve and the build fails on module resolution rather than on anything that mentions shadcn.
Two settings are effectively write once. Changing baseColor later does not rewrite the components already generated, and flipping cssVariables changes how new components are written while existing ones keep the old approach, leaving a codebase with two theming styles.