From my understanding,
os.pullEventRaw()
Is essentially os.pullEvent() but does not accept the "Terminate" event.
os.pullEvent() and os.pullEventRaw() both operate based on a concept called "events". An event is just something that "happens", I suppose would be one way to explain it. When this event happens an event is queued and is waiting to be handled or disregarded.
Pulling the "event" allows us to handle it and its parameters.
For example if we wanted to check for a redstone signal to our computer, we would write some code that looks somewhat like this:
while true do -- Infinite loop :P/>/>
event, param1, param2 = os.pullEventRaw()-- This raw piece just means that the computer will not terminate the program
-- if the "Terminate" event is queued.
if event == "redstone" then break end -- Here we check to see if the variable event contains the case
-- "redstone", or a redstone signal. param1 and param2 are just extra variables in the case of other data or arguments
-- received with the event.
-- Pseudo:
--[[
infinitely run this code
set event, param1, and param2 to whatever event is next triggered by the computer or outside world, but don't
allow terminate!
if the event was a redstone signal then break our infinite loop
]]--
end
Hope I helped!