The two dots are used to put strings together. When you use two dots, you smash two (or multiple) strings together and give them all to print() as one string.
myString = "hello" .. " " .. "world"
print(myString)
Is the same as
print("hello" .. " " .. "world")
Both print "hello world".
This can be used for a lot of purposes, such as adding "woop" to whatever the user types:
while true do
input = read()
print(input .. " woop")
end
When you use a comma, it sends multiple strings to the print function. The comma is used in more than just the print function with strings, even in default CC functions.
term.setCursorPos(1, 1) -- sending 1 and 1
redstone.setOutput('back', true) -- sending 'back' and true
print("hello ", "world") -- sending "hello " and "world"
The print function is just another one of the functions that can take multiple variables, all it does is smash them all together, like you would do with "..".
Even more uses for the comma:
-- defining variables in a table
myTable = {1, 2, 3, 'a', 'b', 'c'}
-- setting multiple variables
a, b = 4, 2
-- is the same as
a = 4
b = 2
-- getting multiple values from a function
event, param1, param2, param3 = os.pullEvent()
Hope I helped.

/>