std.Build.option() (i.e. b.option() in this example) creates a command-line switch / parameter for zig build.
std.Build.addOptions() (i.e. b.addOptions) creates a container for key-value pairs that can be converted to Zig code.
std.Build.Step.Options.addOption() (i.e. options.addOption() adds key-value pairs to that container.
std.Build.Module.addOptions() (i.e. exe.root_module.addOptions()) adds the key-value container, as a Zig code, to the project so it can be @imported.
IMHO somebody needs to buy a thesaurus and find some alternative nouns to “option” for that API. I found it all highly confusing the first time I read it.