Hi Frank,
Have you looked at our "Indicators - Debugging" QuickStart? That shows many concepts related to breakpoints. The "Indicators" topic in the documentation is also essential reading.
1) The document.IndicatorManager.Breakpoints.GetInstances() method will give you access to the breakpoint tag ranges. There is an overload where you pass it a snapshot range and it returns the intersecting breakpoint tag ranges. You'd pass in the line's snapshot range.
2) At the moment, you'd have to do document.IndicatorManager.Breakpoints.GetInstances().Any() to check. We will add a Count property for the next build.
3) You can get the list of that info like this:
foreach (var bpTagRange in document.IndicatorManager.Breakpoints.GetInstances()) {
var bpRange = bpTagRange.VersionRange.Translate(document.CurrentSnapshot);
var lineNum = bpRange.StartLine;
var isEnabled = bpTagRange.Tag.IsEnabled;
var text = document.CurrentSnapshot.GetSubstring(bpRange);
}