Generally, diodes are used sometimes to avoid adding a logic gate when no extra gates are available, or desired. They are also used to clamp logic gate inputs to within a diode drop of another voltage, where the possibility of exceeding voltage levels exists. There are other uses, too.
Without specific examples to share, specific explanation is a shot in the dark, but here is one generalized example you may have seen.
Say the input A to a logic gate is driven by the output A of another logic gate and you want one state (either high or low) of an output B from a yet another logic gate to override the input/output A. Of course, you can gate output B with output A to drive input A using a gate, but that requires an added gate. Instead you connect output B to input/output A using a diode. The diode conducts only when the output B is high or low (but not both) depending on the polarity of the diode. Of course this all assumes that the output A can be effectively "overpowered" by the output B. The "overpowering" requirement can be satisfied by putting a series resistor between the output A and the input A and connecting the diode to the input A. This example is generally applicable to CMOS logic where the series resistor does not have an adverse effect on gate operation owing to the very high input impedance of CMOS logic. Also the loss of voltage due to the diode's voltage drop is of little concern with CMOS logic due to the higher supply voltage and wider noise margin.
The 1n4148 metal doped diodes are widely used because they are faster and cheaper than ordinary silicon diodes yet still have the capacity to handle the small amount of current and reverse voltages encountered. The fast switching characteristic may be necessary when propagation delay is a relevant consideration.