It's very granular. Each node does the most minor thing. The #1 thing to understand about Node-Red, in my opinion, is that there's a message (msg.) and everything acts on or modifies the msg.?? object. Debug injects an initial msg.?? with whatever you configure it to inject. The next node along needs to react to it... either by changing it, or using it, or both.
Another example to help with understanding...
Let's start untraditionally on the right.. two Hubitat Nodes that have ">> on" and ">> off" below. The top one turns a light (in this example) On and the Bottom turns the light Off. If a message gets to that node, it doesn't matter the content of the message, the light goes on or off. In this example, ultra simplified, the logic is just "block or not" 
Note: the Hubitat Nodes do respond to the content of the msg object IF.. IF you tell it to. In this example the Hubitat nodes are not interpreting msg.
To further the explanation, we go over to the left and the motion Sensor node. Motion Sensors are either "active" or "inactive" and the Hubitat device node sets msg.payload.value to the state the sensor sends. The msg then goes to the Switch node, which looks at msg.payload.value and forwards the msg object out the top bubble or the bottom depending on the value. "active" goes out the top, "inactive" goes out the bottom. Same message, nothing has altered IN the msg object, right? It's just passed right through untouched.
Next is a Change node.. this node is only going to change something within the msg object. It deletes the value that the motion sensor inserted and changes msg.payload to be "stop".
If the current time is between sunset and sunrise (in other words, night time) the node passes the message, unaltered. If it is NOT that time frame, the message is discarded. Passing along the message (which contains "stop") to the Hubitat node turns ON the light. WOW - stop turns it ON.
This is the importance of THIS example.. the fact a message arrived to the node is all it takes, no interpretation of the "stop".
If the Motion Sensor injected an "inactive," then the delay timer starts, if it gets to zero, then the message is forwarded to the Hubitat node for OFF.
Remember "stop" ?? well it's purpose is for a re-active from the motion sensor. If the motion sensor went Active, then a moment later, inactive, the delay timer starts, BUT if motion is detected again, then that delay needs to be... stopped. "stop" once again flows through and turns on the light, which was already on, so it's like nothing.
This also works when the time is "day time" and someone manually turns the light ON via the switch. When motion stops, the delay timer starts and the light gets turned OFF.