Q:

Como "funciona" a Propriedade de Dependência(DependencyProperty)?

Estou tentando entender o recurso de propriedades de dependência. Já li alguns tutoriais no msdn mas o recurso ainda está obscuro para mim.
Exemplo:
using System; 
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication3 {

   /// <summary> 
      /// Interaction logic for UserControl1.xaml 
   /// </summary> 

   public partial class UserControl1 : UserControl {

      public UserControl1() {
         InitializeComponent();
      }

      public static readonly DependencyProperty
         SetTextProperty = DependencyProperty.Register("SetText", typeof(string), 
         typeof(UserControl1), new PropertyMetadata("", new PropertyChangedCallback(OnSetTextChanged)));

      public string SetText {
         get {return(string) GetValue(SetTextProperty); }
         set {SetValue(SetTextProperty, value);}
      }

      private static void OnSetTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
         UserControl1 UserControl1Control = d as UserControl1;
         UserControl1Control.OnSetTextChanged(e);
      }

      private void OnSetTextChanged(DependencyPropertyChangedEventArgs e) {
         tbTest.Text = e.NewValue.ToString();
      }
   }
}       

XAML
<Window x:Class = "WpfApplication3.MainWindow"
   xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:views = "clr-namespace:WpfApplication3" 
   Title = "MainWindow" Height = "350" Width = "604">

   <Grid>
      <views:UserControl1 SetText = "Hellow World" />
   </Grid>

</Window>

Não estou entendendo a "mecânica" do funcionamento dos métodos da classe UserControl1. Ou seja, em que momento eles estão sendo chamados, e por quem.

A:

Para que uma propriedade de um UserControl(DependencyObject) possa ser usada no XAML e assim poder ser acedida/calculada por outros meios, que não os tradicionais "get" e "set", tais como themes, binding, animações, templates, etc, ela tem de ser declarada como DependencyProperty e registada no "WPF property system".  
Isso é feito recorrendo ao método estático Register() da classe DependencyProperty.
Uma Dependency Property é composta por duas "partes":

Identificador da propriedade - Uma instância de DependencyProperty obtida pelo retorno do método DependencyProperty.Register() e guardada como um membro estático do DependencyObject. Esse identificador é usado como parâmetro para muitas das APIs que interagem com o "WPF property system".
A convenção obriga a que o seu nome seja o da propriedade acrescido de Property
public static readonly DependencyProperty SetTextProperty = 
    DependencyProperty.Register("SetText", typeof(string), typeof(UserControl1),
             new PropertyMetadata("", new PropertyChangedCallback(OnSetTextChanged)));

CLR "wrapper" - A real implementação da propriedade. Essa implementação recorre ao identificador e aos métodos GetValue() e SetValue() do DependencyObject para implementar o "get" e "set" da propriedade.  
public string SetText 
{
     get {return(string) GetValue(SetTextProperty); }
     set {SetValue(SetTextProperty, value);}
}

O método DependencyProperty.Register() tem 3 overloads:  

public static DependencyProperty Register(String name, Type propertyType, Type ownerType) - Regista uma dependency property com o nome indicado, o seu tipo e tipo do seu proprietário. Isto é o mínimo necessário para registar a propriedade.  
public static DependencyProperty Register(string name,Type propertyType,Type ownerType,PropertyMetadata typeMetadata) - Regista uma dependency property com o nome indicado, o seu tipo, tipo do seu proprietário e metadados.
public static DependencyProperty Register(string name,Type propertyType,Type ownerType,PropertyMetadata typeMetadata, ValidateValueCallback validateValueCallback) - Regista uma dependency property com o nome indicado, o seu tipo, tipo do seu proprietário, metadados e um callback para validação do valor. 

Ao fazer o registo da propriedade, além de indicar o nome, tipo e tipo do seu proprietário é possível indicar vários callbacks,  
Esses callbacks são:  

PropertyChangedCallback - Via PropertyMetadata, é chamado quando o valor da propriedade é alterado.
CoerceValueCallback - Via PropertyMetadata, é chamado quando o valor estar a ser avaliado.  
ValidateValueCallback - É chamado após o valor da propriedade ser atribuido. Deve retornar true ou false de acordo com a validação.

Assim, respondendo à sua pergunta, esses métodos estão a ser chamados pelo "WPF property system" enquanto interage com a propriedade.
Mais informação em Dependency Properties Overview.

