If you had no idea of what the word "but" means and would just identify it as a conjunction, given that it rests between 2 propositions and look at the resulting truth table then "A BUT B" would be true if A and B are both true and false otherwise. Which is functionally equivalent to "A AND B".
When it comes to how it is used in natural language it seems to be used to (preemptively) contradict a stated or more often unstated assumption.
So take the example from the original question:
“I like coffee but I do not like caffeine.
if you instead said "I like coffee" then people might assume. "They like coffee? It's quite bitter and most people just like it because of the stimulating effect. They probably like it because of the stimulating effect".
“I like snow but I also like warm weather”
Again if you just said "I like snow", then people would assume. "They like snow so they probably like winter, coldness, snowball fights [other snow related things] or because snow is quite extreme might dislike [not snow related things]".
“I stayed up all night working on my homework, but my dog ate it for breakfast”
"They stayed up all night working on their homework? So they probably have made some progress and are ready to turn it in"
“I like dogs, but I like cats more”
"They like dogs? So it's probably their favorite animal."
"Caesar is dead but Brutus is alive"
"Ceasar is dead? Then he was probably ambushed and his fellow Brutus, who was with him, is probably also dead.
Where A on it's own is rather something like: A -> ◊B, so from A follows it is possible that B.
So BUT could be an operator applied to A -> ◊B that transforms it into an AND.
So BUT(A->◊B) -> A AND/BUT not B
or conversely A BUT not B as opposed to A AND not B also implies that there is a connection of A -> ◊B and that it's not just a list of required features.