<p>This question is known as the <strong>direct problem</strong> in the study of <a href="https://en.wikipedia.org/wiki/Geodesy" rel="noreferrer">geodesy</a>. </p>

<p>This is indeed a very popular question and one that is a constant cause of confusion. The reason is that most people are looking for a simple and straight-forward answer. But there is none, because most people asking this question are not supplying enough information, simply because they are not aware that:</p>

<ol>
<li>Earth is not a perfect sphere, since it is flattened/compressed by it poles</li>
<li>Because of (1) earth does not have a constant Radius, <code>R</code>. See <a href="https://en.wikipedia.org/wiki/Earth_ellipsoid" rel="noreferrer">here</a>.</li>
<li>Earth is not perfectly smooth (variations in altitude) etc. </li>
<li>Due to tectonic plate movement, a geographic point's lat/lon position may change by several millimeters (at least), every year. </li>
</ol>

<p>Therefore there are many different assumptions used in the various geometric models that apply differently, depending on your needed accuracy. So to answer the question you need to consider to what <strong>accuracy</strong> you would like to have your result. </p>

<p><strong>Some examples:</strong></p>

<ul>
<li>I'm just looking for an approximate location to the nearest few kilometers for small ( <strong>&lt;</strong> 100 km) distances of in <code>latitudes</code> between <code>0-70 deg</code> <strong>N|S</strong>. (Earth is ~flat model.)</li>
<li>I want an answer that is good anywhere on the globe, but only accurate to about a few meters </li>
<li>I want a super accurate positioning that is valid down to atomic scales of <code>nanometers</code> [nm].</li>
<li>I want answers that is very fast and easy to calculate and not computationally intensive. </li>
</ul>

<p>So you can have many choices in which algorithm to use. In addition each programming language has it's own implementation or "package" multiplied by number of models and the model developers specific needs. For all practical purposes here, it pays off to ignore any other language apart <code>javascript</code>, since it very closely resemble pseudo-code by its nature. Thus it can be easily converted to any other language, with minimal changes.</p>

<p>Then the main models are: </p>

<ul>
<li><code>Euclidian/Flat earth model</code>: good for very short distances under ~10 km  </li>
<li><code>Spherical model</code>: good for large longitudinal distances, but with small latitudinal difference. Popular model:

<ul>
<li><a href="https://www.movable-type.co.uk/scripts/latlong.html" rel="noreferrer">Haversine</a>: <strong>meter</strong> accuracy on [km] scales, very simple code.</li>
</ul></li>
<li><code>Ellipsoidal models</code>: Most accurate at any lat/lon and distance, but is still a numerical approximation that depend on what accuracy you need. Some popular models are: 

<ul>
<li><a href="https://en.wikipedia.org/wiki/Geographical_distance#Lambert%27s_formula_for_long_lines" rel="noreferrer">Lambert</a>: <strong>~10 meter</strong> precision over 1000's of <em>km</em>. </li>
<li><a href="http://www.dtic.mil/get-tr-doc/pdf?AD=AD0627893" rel="noreferrer">Paul D.Thomas</a>:  Andoyer-Lambert approximation</li>
<li><a href="https://www.movable-type.co.uk/scripts/latlong-vincenty.html" rel="noreferrer">Vincenty</a>: <strong>millimeter</strong> precision and computational efficiency</li>
<li><a href="http://arxiv.org/pdf/1109.4448.pdf" rel="noreferrer">Kerney</a>: <strong>nanometer</strong> precision</li>
</ul></li>
</ul>

<p><strong>References:</strong></p>

<ul>
<li><a href="https://en.wikipedia.org/wiki/Reference_ellipsoid" rel="noreferrer">https://en.wikipedia.org/wiki/Reference_ellipsoid</a></li>
<li><a href="https://en.wikipedia.org/wiki/Haversine_formula" rel="noreferrer">https://en.wikipedia.org/wiki/Haversine_formula</a></li>
<li><a href="https://en.wikipedia.org/wiki/Earth_ellipsoid" rel="noreferrer">https://en.wikipedia.org/wiki/Earth_ellipsoid</a></li>
<li><a href="https://en.wikipedia.org/wiki/Geodesics_on_an_ellipsoid" rel="noreferrer">https://en.wikipedia.org/wiki/Geodesics_on_an_ellipsoid</a></li>
<li><a href="https://en.wikipedia.org/wiki/Vincenty%27s_formulae" rel="noreferrer">https://en.wikipedia.org/wiki/Vincenty%27s_formulae</a></li>
<li><a href="https://geographiclib.sourceforge.io/scripts/geod-calc.html" rel="noreferrer">https://geographiclib.sourceforge.io/scripts/geod-calc.html</a></li>
</ul>
Get lat/long given current point, distance and bearing
<p>Given an existing point in lat/long, distance in (in KM) and bearing (in degrees converted to radians), I would like to calculate the new lat/long. <a href="http://www.movable-type.co.uk/scripts/latlong.html" rel="noreferrer">This</a> site crops up over and over again, but I just can't get the formula to work for me. </p>

<p>The formulas as taken the above link are:</p>

<pre><code>lat2 = asin(sin(lat1)*cos(d/R) + cos(lat1)*sin(d/R)*cos(θ))

lon2 = lon1 + atan2(sin(θ)*sin(d/R)*cos(lat1), cos(d/R)−sin(lat1)*sin(lat2))
</code></pre>

<p>The above formula is for MSExcel where-  </p>

<pre><code>asin          = arc sin()   
d             = distance (in any unit)   
R             = Radius of the earth (in the same unit as above)  
and hence d/r = is the angular distance (in radians)  
atan2(a,b)    = arc tan(b/a)  
θ is the bearing (in radians, clockwise from north);  
</code></pre>

<p>Here's the code I've got in Python.</p>

<pre><code>import math

R = 6378.1 #Radius of the Earth
brng = 1.57 #Bearing is 90 degrees converted to radians.
d = 15 #Distance in km

#lat2  52.20444 - the lat result I'm hoping for
#lon2  0.36056 - the long result I'm hoping for.

lat1 = 52.20472 * (math.pi * 180) #Current lat point converted to radians
lon1 = 0.14056 * (math.pi * 180) #Current long point converted to radians

lat2 = math.asin( math.sin(lat1)*math.cos(d/R) +
             math.cos(lat1)*math.sin(d/R)*math.cos(brng))

lon2 = lon1 + math.atan2(math.sin(brng)*math.sin(d/R)*math.cos(lat1),
                     math.cos(d/R)-math.sin(lat1)*math.sin(lat2))

print(lat2)
print(lon2)
</code></pre>

<p>I get </p>

<pre><code>lat2 = 0.472492248844 
lon2 = 79.4821662373
</code></pre>