Отличия селекторов

Не могу понять чем отличается p .my_class (пробел между ними) от p.my_class (без пробела)?

Тем, что пробел показывает ВЛОЖЕННОСТЬ последующего элемента, например:
`

` Здесь, если Вы хотите выбрать элементы списка именно с классом main, Вы и напишите: .main li (с пробелом), т.е. li - это ПОТОМКИ `
    ` , они ВЛОЖЕНЫ в него. В Вашем случае, my_class в первом варианте ВЛОЖЕН в элемент p, т.е. является его потомком. Во втором случае my_class не является вложенным, а относится к самому p: `

    `, как, например, здесь: `

    `. Тогда Вы и напишите БЕЗ пробела - div.to-rudolf.
1 лайк