Regarding your first question:
For a certain set of equations, Reduce
is able to find all roots and prove that no more roots exist in a given rangeinterval. I am not sure how this works, but there's an interesting blog post about it here.
When it is not able to guarantee (using symbolic methods) that there are no more solutions, it may still return a set, but it will give a warning. This is the case for your equation.
Plot[BesselJ[1, x]^2 + BesselK[1, x]^2 - Sin[Sin[x]], {x, 0, 10}]
Reduce[BesselJ[1, x]^2 + BesselK[1, x]^2 - Sin[Sin[x]] == 0 && 0 < x < 10, x]
(*
Reduce::incs: Warning: Reduce was unable to prove that the solution set found is complete. >>
*)
(* ==>
x == Root[{BesselJ[1, #1]^2 + BesselK[1, #1]^2 - Sin[Sin[#1]] &,
0.886604635313462076794393681674}] ||
x == Root[{BesselJ[1, #1]^2 + BesselK[1, #1]^2 - Sin[Sin[#1]] &,
3.03296608901366835385376172847}] ||
x == Root[{BesselJ[1, #1]^2 + BesselK[1, #1]^2 - Sin[Sin[#1]] &,
6.32396651371147786252003752922}] ||
x == Root[{BesselJ[1, #1]^2 + BesselK[1, #1]^2 - Sin[Sin[#1]] &,
9.39114340758508579766919382120}]
*)
ToRules@N[%]
(* ==>
Sequence[{x -> 0.886605}, {x -> 3.03297}, {x -> 6.32397}, {x -> 9.39114}]
*)
Note that it is important to restrict the search to an interval. Otherwise Reduce
will tell you that it can't find any solutions.