Sending data to the client when I update something?

So I forgot how I got here, but I stumbled across this post How you should secure your game - A beginner guide for secure networking and developing anticheats - #8 by WITHproInc and as a new developer still I’d like to start practing better ways to make my code or game I guesx safe(?) or more secure although I personally won’t ever have to deal with exploiters I still think I should learn. But I came across this example code

SyncRemote:FireClient("syncSettings", settings)
local function syncHandler(self, index, value)
    SyncRemote:FireClient("syncSetting", index, value) -- We only send one property at a time and only when it changes! Much less perceived server lag!
end
local settings = setmetatable({}, {__index = settings, __newindex = syncHandler})

And from my understanding it seems like basically whenever this settings table or whatever has something change it would run the function and I guess update the client and ngl this alone seems a lot nicer and organized then the mess I’ve been doing so I was just wondering if someone could like explain like what’s happening here and maybe give another example of how I could use something like this?

p.s: Sorry if the title doesn’t really fit wasn’t sure what to put lol