I am not 100% sure, but I fear this cannot be achieved by TDateTimeIntervalChartSource. I'd prefer to use a TListChartSource instead which gives you full control of the label positioning process. You just have to populate the ListSource with the coordinates and texts for the points at which you want to have a label.
Some extra code is required if you want the labels to adjust themselves according to the space available. Please see the attached modified version of your demo - there's plenty of comments to explain what's happening. The code starts with 1-minute intervals and increases the interval until adjacent labels do no longer overlap. For simplicity, I am only checking the first two labels - this is ok in your case where labels have the same width approximately. The chart is aligned with the form, therefore, if you reduce the width of the form at runtime you will come to a point where the next interval is selected, but there are still nice labels. You can also zoom in (by dragging a rectangle with the mouse), and you will get nice labels again.
As for your second question: Do you know the ChartTools? If not, see for example this tutorial:
http://wiki.lazarus.freepascal.org/TAChart_Tutorial:_Chart_ToolsChart tools are designed for what you mention. Since you want to read values also between data points I used a TUserDefinedTool; the vertical line is added as a TConstantLine series to the chart. It is normally turned off (Active = false). In the Mousedown event of the ChartTool, the line is turned on and moved to the position of the mouse cursor (use Chart.ImageToGraph and Chart.GraphToImage methods to convert between pixels and plotted coordinates). In the MouseUp, the line is hidden again. And in the OnDraw event of the chart I added code which displays a box at the upper end of the vertical line showing the currently selected time.
A comment on your code:
Don't create the ChartSource as a local variable in the ButtonClick procedure. When this procedure is exited the variable disappears, but the ChartSource is still living - there is no easy way to access it again. Define the ChartSource as an element of the Form, or add it to the form at design time using the object inspector.