Broadcasting a system message to all players

Could I use a for loop too loop throught all the players in game and use game.StarterGui:SetCore or would I need to first fireallclients

You need to use RemoveEvents and fire it to every client. When fired, tell StarterGui to make a system message on each client.

You could try using Messaging Service to send a message to all servers

Can I just use the for loop in a local script on all players

I only want to send a msg to all players in one server

Oh, in that case you could use RemoveEvents like @lolmansReturn said. Also you dont need a loop you can use RemoteEvent:FireAllClients() Here is a basic script. (You have to add how its triggered and the ScreenGui and Frame's name)

-- local script
game.ReplicatedStorage.RemoteEvent.OnClientEvent:Connect(function()
	script.Parent.Frame.Visible = true
end)

-- server script
-- add how its triggered
game.ReplicatedStorage.RemoteEvent:FireAllClients()