Does Kernels always map data points to higher dimensions
'Another dimension' can be also a lower dimensional space. You are free to choose your kernel. Example is: $k\big((x_1, y_1), (x_2, y_2)\big) = x_1x_2$
Is it true that we can always find a higher dimensions that can linearly seperate data points? Yes. If you have a finite dataset, you can always find a higher dimension that can linearly seperate data points.  The obvious one is mapping n points to a n-dimensional space. If you do any non-trivial mapping (no d points are on a d-1 dimensional hyperspace), then you can always linearly separate any two class assignments.