I m sorry for a late answer, I haven’t been active on Discuss lately.

Anyway, the property that you exploit to use a segtree is that “If I know the answer in the range [A, B] and [B, C], can I get the answer for [A, C] fast?” If you can answer this question then go ahead and use a segment tree. Additionally for lazy “If I update a range, can I ‘represent’ the update using just one variable?”. For example, if its range sum+range addition, then you know you can just store the addition update and add (B-A+1) \times \text{Update variable} when answering the query.

One of the slightly non trivial problems is Sereja and Commands. The genius of this segtree solution is that you can use two segtrees, one for commands and one for the array. Executing the commands in reverse order, you know how many times each command was executed and use it on the array segtree. There is no foolproof generalization of thinking about segtree problems but what I told you is applicable to many problems. Other non trivial problems can be solved using your non-intuitive reasoning(Kinda like DP, there is no proper way of thinking about DP problems, each problem is different in its own way).