They both mean the same thing. But there's a rule in דקדוק that a hard vowel sound ("תנועה גדולה") becomes a soft vowel sound ("תנועה קטנה") when the word is the beginning of a phrase ("סמיכות"). For example: The word שָֹכָר, ("sachar") which means "reward" (note the kamatz under the ש - as in בָּרוּךְ מְשַׁלֵּם שָֹכָר טוֹב לִירֵאָיו), loses the "Kamatz" when it is part of a phrase, such as "schar Mitzvah" (as in "schar Mitzvah Mitzvah"). Another example: "Bird's nest" in Loshon HaKodesh is "kein" - with a tzeiri, not "kan" with a segol. But in the phrase " קַן צִפּוֹר" the tzeiri becomes a pasach. (People's referring to the Mitzvah as "shiluach Hakan" is technically grammatically incorrect. The Mitzvah would be called "Shiluach HaKein," and the reason people call it "kan" is because in the Torah the word is part of a phrase so it is pronounced "kan.")
The difference between כָל and כֹּל is like that too. כֹּל is a "hard sound" and כָל is the soft sound. When the word כל is the beginning of a phrase, it gets the soft sound, as is בְּכָל לְבָבְךָ וּבְכָל נַפְשֶׁךָ. But when the word כל is not the beginning of an independent phrase, it becomes כֹּל, as in וְאַתָּה מוֹשֵׁל בַּכֹּל or כִּי כֹל בַּשָּׁמַיִם וּבָאָרֶץ.
I suppose you can condense the difference between כֹּל and כָל by saying כֹּל means "everything" and כָל means "all of...". The idea is that כָל always is the beginning of a phrase.