<p>For example, to make a DIY cartesian 3d printer you <strong>could</strong> use/do the following:</p>

<ul>
<li><p>Create G-code using a program of your choice.</p></li>
<li><p>Load it into Universal G-code Sender (GRBL).</p></li>
<li><p>Pass it into an Arduino with GRBL.</p></li>
<li><p>The arduino can pass the instructions to the drivers through a GRBL arduino uno shield.</p></li>
<li><p>The drivers will control the steppers.</p></li>
</ul>

<p>If you want to make a DYI delta 3d printer, which point of this whole process needs to be altered in order for the delta printer to work properly? Is there an existing open source software for delta printers/cncs?</p>

<p>EDIT: This question could be asked about any kind of non-cartesian 3d printer, including Delta, SCARA, Polar, etc.</p>

The short answer is that the handling of the non-cartesian design is done by the motion-control firmware running on the Arduino.
The long answer:
I don't believe GRBL supports non-cartesian designs, and it is not commonly used for printers. It is more often used for mills, routers, or laser machines. 3D printers will typically use a firmware such as Marlin, which supports several printer designs, including Delta machines.
At no point is the g-code itself changed. The motion control firmware running on the Arduino or other controller interprets the g-code and determines which way and when to step each motor to accomplish the motion.
With a simple cartesian machine, commands for the X-axis only relate to the X-axis motor, but for a non-cartesian machine the axis and motors have complex relationships. The firmware must be programmed and configured to control the motors correctly.
The g-code itself is never passed to the drivers. The commands to the driver are simple electrical signals to "enable" (to energize the motor power - even to just hold position), "direction" (which way to rotate the motor shaft), and "step" (which causes the motor to rotate by one step in the selected direction).