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 range. 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}]
*)