Edit in JSFiddle

var tileLayer = new ol.layer.Tile({
    source: new ol.source.OSM()
});

var map = new ol.Map({
    layers: [tileLayer],
    view: new ol.View({
        center: ol.proj.transform([77.444504, 22.795357], 'EPSG:4326', 'EPSG:3857'),
        zoom: 5
    }),
    target: 'mapDiv'
});

var features = new Array();
var coordinates = [[79.0900, 21.1500],[72.776714, 18.948932],[77.2090,28.6139],[85.1000,25.6000],[78.4800,17.3700]];
var transformedCoordinates = new Array();

for (var i = 0; i < coordinates.length; ++i) {
    transformedCoordinates[i] = ol.proj.transform(coordinates[i], 'EPSG:4326', 'EPSG:3857');
    features[i] = new ol.Feature(new ol.geom.Point(transformedCoordinates[i]));
}

var source = new ol.source.Vector({
    features: features
});

var clusterSource = new ol.source.Cluster({
    distance: 40,
    source: source
});

var styleCache = {};
var clusters = new ol.layer.Vector({
    source: clusterSource,
    style: function (feature, resolution) {
        var size = feature.get('features').length;
        var style = styleCache[size];
        if (!style) {
            style = [new ol.style.Style({
                image: new ol.style.Circle({
                    radius: 10,
                    stroke: new ol.style.Stroke({
                        color: '#fff'
                    }),
                    fill: new ol.style.Fill({
                        color: '#3399CC'
                    })
                }),
                text: new ol.style.Text({
                    text: size.toString(),
                    fill: new ol.style.Fill({
                        color: '#fff'
                    })
                })
            })];
            styleCache[size] = style;
        }
        return style;
    }
});

map.addLayer(clusters);

var vectorLine = new ol.source.Vector({});

for (var i = 1; i < transformedCoordinates.length; i++) {
    var startPoint = transformedCoordinates[0];
    var endPoint = transformedCoordinates[i];
    var lineArray = [startPoint, endPoint];
    var featureLine = new ol.Feature({
        geometry: new ol.geom.LineString(lineArray)
    });

    var lineStyle = new ol.style.Style({
        fill: new ol.style.Fill({
            color: '#00FF00',
            weight: 4
        }),
        stroke: new ol.style.Stroke({
            color: '#00FF00',
            width: 2
        })
    });
    featureLine.setStyle(lineStyle);
    vectorLine.addFeature(featureLine);
    var firstPoint = coordinates[0];
    var secondPoint = coordinates[i];
    var slope = ((secondPoint[1] - firstPoint[1]) / (secondPoint[0] - firstPoint[0]));
    var angle = Math.atan(slope);
    var rotation;

    //Shifting the graph Origin to point of start point
    secondPoint[0] = secondPoint[0] - firstPoint[0];
    secondPoint[1] = secondPoint[1] - firstPoint[1];
    //Fourth quadrant
    if (secondPoint[0] > 0 && secondPoint[1] < 0) {
        rotation = (Math.PI / 2 - angle);
    }
    //Second quadrant
    else if (secondPoint[0] < 0 && secondPoint[1] > 0) {
        rotation = -(Math.PI / 2 + angle);
    }
    //Third quadrant
    else if (secondPoint[0] < 0 && secondPoint[1] < 0) {
        rotation = 3 * Math.PI / 2 - angle;
    }
    //First quadrant
    else if (secondPoint[0] > 0 && secondPoint[1] > 0) {
        rotation = angle;
    }
    var iconStyle = new ol.style.Style({
        image: new ol.style.Icon(({
            anchorXUnits: 'fraction',
            anchorYUnits: 'pixels',
            opacity: 0.75,
            src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAVlpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KTMInWQAAAdpJREFUOBGFVDtOA0EMnewGCS7ACeAYUIISEtpAxRGgRaLlFijiFkCAlgqJDokT0CAqJD7ZxLznsScT2GR35IzXnzdvbG9CWPZIKOhuS3u3lLKroWZbllbvyxIB9gB5TIGZL9kaFQltxoDdDsB8dTTPfI0YKUBCy3VA3SQ4Ke/cHrKYZFuoSFihD0AdBZtmv1L2NM9iFmIkR3YyYEYKJeUYO4XrPovVpqX3WmXGbs8ACDIx8Vrua24jy6x7APDa/UDnpSnUufJaLmFp3UNCzq5KcFJWBkjQvrHUafh/23p23wbgDAnktgaWM3bdjAVr52C+T9QSr+4d/8NyvrO3Buj1ciDfCeW+nGWa3YAh9bnrNbBzUDL35SwVowBYge9ibEU9sb1Se3wRbBMT6iTAzlaqhxBziKH2Gbt+OjN2kx3lMJOVL+q00Zd3PLHM2R3biV/KAV8edha7JUGeKNTNRh/ZfkL4xFy/KU7z2uW1oc4GHSJ1DbIK/QAyguTsfBLi/yXhEXAN8fWOD22Iv61t+uoe+LYQfQF5S1lSXmksDAMaCyleIGdgsjkHwhqz2FG0k8kvYQM5p5BnAx608HKOgNdpmF6iQh8aHOeS9atgi511lDofSlKE4ggh679ecGIXq+UAsgAAAABJRU5ErkJggg==',
            rotation: rotation
        }))
    });
    var iconFeature = new ol.Feature({
        geometry: new ol.geom.Point(endPoint)
    });
    iconFeature.setStyle(iconStyle);
    vectorLine.addFeature(iconFeature);
}
var vectorLayer = new ol.layer.Vector({
    source: vectorLine
});
map.addLayer(vectorLayer);



<div id="mapDiv" style="width:100%;height:500px"></div>

              

External resources loaded into this fiddle: